如何在连接可能为null的字段时返回备用连接?

时间:2015-12-02 22:49:59

标签: sql oracle oracle11g

我有一个视图,使用last_name || ', ' || first_name person_name将两个名称字段连接成一个名称字段。问题是我们的数据库有很多行,其中一个或两个字段为空。发生这种情况时,如果其中一个名称字段为空,我们最终会得到一个逗号(两个名称都为null)或一个不合适的逗号。

我该如何解决这种情况?理想情况下会发生以下情况: 如果两个字段均为空,则将结果字段保留为空。不要显示逗号。 如果一个字段为空,则不显示逗号。显示非空字段。

3 个答案:

答案 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 ...
  • 首先将first_name和person_name连接起来并检查是否存在 返回null或not null
  • 如果null只返回null但是如果它不是concat的逗号那么 开始并将其归还。

答案 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。