Sql 当连接可能为空的字段时,如何返回备用连接?

Sql 当连接可能为空的字段时,如何返回备用连接?,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我有一个视图,它使用last_name | | |'、'| | first_name person_name将两个姓名字段连接到一个姓名字段中。问题是我们的数据库有许多行,其中一个或两个字段都为空。出现这种情况时,我们将使用一个逗号(两个名称都为null)或一个不合适的逗号(如果其中一个名称字段为null) 我如何解决这种情况?理想情况下,将发生以下情况: 如果两个字段都为null,则将结果字段保留为null。不要显示逗号。 如果一个字段为空,则不显示逗号。显示非空字段。尝试一下: SELECT

我有一个视图,它使用
last_name | | |'、'| | first_name person_name
将两个姓名字段连接到一个姓名字段中。问题是我们的数据库有许多行,其中一个或两个字段都为空。出现这种情况时,我们将使用一个逗号(两个名称都为null)或一个不合适的逗号(如果其中一个名称字段为null)

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

尝试一下:

SELECT last_name
  ||
  CASE
    WHEN last_name IS NULL
    OR first_name  IS NULL
    THEN NULL
    ELSE ', '
  END
  || first_name
FROM <your table>
选择姓氏
||
案例
当姓氏为空时
或第一个名称为空
然后无效
其他','
结束
||名字
从…起
  • 首先记录姓名和人名,并检查是否 返回null或NOTNULL
  • 如果为null,则返回null,但如果不是逗号,则返回 开始并返回它
试试NVL2()

选择nvl2(姓、名、名)作为人名
从…起
如果first_name为null,则此示例将返回last_name

   SELECT last_name
      ||
      CASE CONCAT(first_name , person_name) as fullname
      WHEN NULL
      THEN NULL
      ELSE 
      CONCAT(',',fullname)
      END
    from ...