欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

db2 中union 查询碰见的空值有关问题,求大神解答一二

更新时间: 2014-01-05 02:23:01 责任编辑: Author_N1

 

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。很多不会,有劳各位了。
--参考方法--
提示什么
id是否是主键
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:23:01
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9135/
本文WWW.DOC100.NET DOC100.NET版权所有。