DB2 SQL - 当我的case语句的结果为NULL时,如何显示任何内容而不是连字符?

时间:2014-02-25 21:41:16

标签: sql db2

所有

我正在编写一个包含CASE语句的查询,该语句比较两个日期时间字段。如果日期B>日期A,然后我想查询显示日期B.但是,如果日期B不是>日期A,然后将获取查询创建的报表的用户希望该列为空(换句话说,不包含单词'NULL',不包含连字符,不包含低值日期)。我今天一直在研究这个,但还没有提出一个可行的解决方案,所以我想在这里问。这就是我目前所拥有的:

CASE
  WHEN B.DTE_LNP_LAST > A.DTE_PROC_ACT
  THEN B.DTE_LNP_LAST
  ELSE ?
  END AS "DATE OF DISCONNECT"

如果我把NULL放在哪里?是的,然后我在查询结果中得到一个连字符( - )。如果我省略Else语句,我也会在查询结果中得到一个连字符。 ''根本不起作用。有没有人有任何想法?

2 个答案:

答案 0 :(得分:2)

通常,显示空值的方式由用于显示查询结果的客户端软件控制。如果您坚持在SQL中执行此操作,则需要将日期转换为字符串:

CASE
  WHEN B.DTE_LNP_LAST > A.DTE_PROC_ACT
  THEN VARCHAR_FORMAT(B.DTE_LNP_LAST)
  ELSE ''
END AS "DATE OF DISCONNECT"

如果需要,将VARCHAR_FORMAT()替换为您平台上DB2版本中可用的格式化函数。

答案 1 :(得分:1)

您可以使用合并功能

Coalesce (column, 'text')

如果第一个值为null,则它将被第二个值替换。