SQL - 使用带有多个 IS NULL、IS NOT NULL 的 CASE 语句

时间:2021-07-28 00:49:22

标签: sql case

我在编写包含多个 IS NULL、NOT NULL 条件的 case 语句时遇到困难。我有下面的 case 语句,但是似乎无法识别第三个条件(WHEN ID IS NOT NULL AND LABEL IS NULL THEN TITLE)。当 Label 为 null 时,语句不选取标题。有没有不同的方式来写这个 case 语句?

CASE WHEN ID IS NULL THEN TEXT 
WHEN ID IS NOT NULL THEN LABEL
WHEN ID IS NOT NULL AND LABEL IS NULL THEN TITLE
END AS DESCRIPTION

谢谢

1 个答案:

答案 0 :(得分:0)

CASE 表达式 停止第一个匹配项。所以你首先需要更严格的条件。在你的情况下:

(CASE WHEN ID IS NOT NULL AND LABEL IS NULL THEN TITLE
      WHEN ID IS NOT NULL THEN LABEL
      WHEN ID IS NULL THEN TEXT
 END) AS DESCRIPTION

或者,一个更简单的公式是:

(CASE WHEN ID IS NULL THEN TEXT
      WHEN LABEL IS NULL THEN TITLE
      ELSE LABEL          
 END) AS DESCRIPTION

在第一个条件之后,我们知道 ID IS NOT NULL,因此无需再次检查。