我有一个视图,使用last_name || ', ' || first_name person_name
将两个名称字段连接成一个名称字段。问题是我们的数据库有很多行,其中一个或两个字段为空。发生这种情况时,如果其中一个名称字段为空,我们最终会得到一个逗号(两个名称都为null)或一个不合适的逗号。
我该如何解决这种情况?理想情况下会发生以下情况: 如果两个字段均为空,则将结果字段保留为空。不要显示逗号。 如果一个字段为空,则不显示逗号。显示非空字段。
答案 0 :(得分:1)
尝试一下:
SELECT last_name
||
CASE
WHEN last_name IS NULL
OR first_name IS NULL
THEN NULL
ELSE ', '
END
|| first_name
FROM <your table>
答案 1 :(得分:0)
SELECT last_name
||
CASE CONCAT(first_name , person_name) as fullname
WHEN NULL
THEN NULL
ELSE
CONCAT(',',fullname)
END
from ...
答案 2 :(得分:0)
尝试使用NVL2()http://www.techonthenet.com/oracle/functions/nvl2.php
select nvl2(last_name, first_name||', '||last_name, first_name) as person_name
from ...;
如果first_name为null,则此示例将返回last_name。