我有一个名为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。请帮帮我。
答案 0 :(得分:0)
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