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
,因此无需再次检查。
我在编写包含多个 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
,因此无需再次检查。