SQL 中没有 CASE 的嵌套 NULLIF(如果(条件 A)或(条件 B),则将列的值分配给 null)

Nested NULLIF (Assign value of a column to null if (condition A) or (condition B)) in SQL without CASE

我有一个 C1 列,其值可以是 'values' 或 'empty' 或 'N/A'。

|  C1 |
-------
|     |
| N/A |
|apple|

我想 SELECT C1 列使用 NULLIF 将空值和 N/A 转换为 NULL。

|  C1 |
-------
|NULL |
|NULL |
|apple|

我们可以做 NULLIF(C1, '') 如果列值为空则返回 NULL。

我们也可以使用 CASE 并以这种方式实现这两种情况,但我想知道是否有办法为它使用 NULLIF,如果可以,怎么做? (或 CASE 以外的任何方式)

类似于NULLIF(C1, '' OR 'N/A')

提前致谢。

使用case表达式:

(case when c1 not in ('', 'N/A') then c1 end)

您可以使用嵌套 NULLIF():

NULLIF(NULLIF(c1, ''), 'N/A')

参见demo