SQL - 对多个 IS NULL、IS NOT NULL 使用 CASE 语句

SQL - Using CASE statement with multiple IS NULL, IS NOT NULL

我在编写包含多个 IS NULL、NOT NULL 条件的 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

谢谢

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,因此无需再次检查。