毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 数据库 >> 正文

DB2中union 查询碰见的空值问题

更新时间:2013-7-7:  来源:毕业论文

DB2中union 查询碰见的空值问题

INSERT INTO TEMP_3 (ID, NAME)
  SELECT T.ID, T.NAME---ID 为varchar类型
    FROM
  (
  SELECT ID, NAME FROM TEMP_1---ID 为varchar类型
  UNION
  SELECT  NULL ID, NAME FROM TEMP_2
   ) T
----
在以上的union 脚本中,运行报错,然后我把脚本改为
INSERT INTO TEMP_3 (ID, NAME)
  SELECT T.ID, T.NAME
    FROM
  (
  SELECT ID, NAME FROM TEMP_1
  UNION
  SELECT  '' AS ID, NAME FROM TEMP_2--NULL 改为''
   ) T
就可以执行插入脚本。

问题1:在DB2中 union脚本如果碰见以上这种情况,是否只能用''替换NULL ?
----------------
在改为''后 我union 脚本可以运行了,但是碰见一个问题,如果 我插入的目标表 temp_3 中 ID 这个字段的字段类型是 DECIMAL(4, 0),那么 我必须把脚本改为这样,把id 字段做类型转换
INSERT INTO TEMP_3 (ID, NAME)
  SELECT CAST(T.ID AS DECIMAL (4,0)), T.NAME---temp_3 ID 为DECIMAL类型
    FROM
  (
  SELECT ID, NAME FROM TEMP_1---ID 为VARCHAR类型
  UNION
  SELECT  '' ID, NAME FROM TEMP_2
   ) T
-----
这个脚本运行报错,原因是 在查询结果中  ID 字段中存在 '' 这个值,无法做转换,如果 我把脚本换成
INSERT INTO TEMP_3 (ID, NAME)
  SELECT CAST(T.ID AS DECIMAL (4,0)), T.NAME---temp_3 ID 为DECIMAL类型
    FROM
  (
  SELECT ID, NAME FROM TEMP_1---ID 为VARCHAR类型
  UNION
  SELECT  '0' ID, NAME FROM TEMP_2
   ) T
 ---即把原来的''默认为'0',这样就可以通过执行。
问题2 :是否 ''只能给他附上一个默认值,比如0 才可以执行DECIMAL  的转换?

有没有其他办法,因为有时候并不能想当然的写一个默认值,因为选择的默认值0可能在该字段中已经被赋予了其他的意义。

以上2个问题 是一并的。刚开始学DB2的sql

2个问题都可以用cast来解决
INSERT INTO TEMP_3 (ID, NAME)
   SELECT T.ID, T.NAME---ID 为varchar类型
     FROM
   (
   SELECT ID, NAME FROM TEMP_1---ID 为varchar类型
   UNION
   SELECT  CAST( NULL AS CHAR ) as  ID, NAME FROM TEMP_2
    ) T

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。