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。
我有一个 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。