如何检查oracle中的空白列,数据类型为NUMBER

时间:2016-10-05 10:18:55

标签: oracle

我有一个名为HARDWARE_ISSUE的表。它有两列div_code和分支代码。 div_code的数据类型为NUMBER,branch_code为varchar2。我想在div_code的值为blank时选择branch_code。我的查询如下:

select  (case when div_code= null then  to_char(branch_code) else to_char(div_code) end) as brordiv  from HARDWARE_ISSUE

但是当div_code为空时,它无法选择branch_code。我还运行以下查询:

   select * from HARDWARE_ISSUE where div_code= null

它也不会产生任何行。但有15行包含空div_code。我正在使用oracle 11g。请帮帮我。

3 个答案:

答案 0 :(得分:0)

Coalesce

select coalesce(to_char(div_code), branch_code) as brordiv
from hardware_issue 

答案 1 :(得分:0)

有几种可能性:

SELECT COALESCE(TO_CHAR(DIV_CODE), BRANCH_CODE) AS BRORDIV
  FROM HARDWARE_ISSUE

将解决我在@Alleksej答案的评论中指出的ORA-00932。还

SELECT NVL(DIV_CODE, BRANCH_CODE) AS BRORDIV
  FROM HARDWARE_ISSUE

会自动将DIV_CODE转换为VARCHAR2,从而隐藏问题 - 但仍然存在涉及VARCHAR2的强制转换,这意味着您可能无法获得所期望的数据类型。

始终记得使用SOME_COLUMN IS NULL而不是SOME_COLUMN = NULL。第一个将按预期工作 - 第二个不会。

答案 2 :(得分:-2)

尝试这样

select  (case when div_code= null then  to_char(branch_code) else 
to_char(div_code) end) as brordiv  from HARDWARE_ISSUE where div_code IS null