【问题标题】:Nested NULLIF (Assign value of a column to null if (condition A) or (condition B)) in SQL without CASE在没有CASE的SQL中嵌套NULLIF(将列的值分配给null if(条件A)或(条件B))
【发布时间】:2021-08-04 15:52:19
【问题描述】:

我有一个 C1 列,其中的值可以是“值”或“空”或“N/A”。

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

我想以一种使用 NULLIF 将空值和 N/A 转换为 NULL 的方式选择列 C1。

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

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

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

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

提前致谢。

【问题讨论】:

    标签: mysql sql nullif


    【解决方案1】:

    您可以使用嵌套的NULLIF()

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

    请参阅demo

    【讨论】:

      【解决方案2】:

      使用case 表达式:

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

      【讨论】:

      • 是的,我知道我们可以使用 CASE(如问题中所述),但我们可以使用 CASE 以外的任何方式吗?谢谢你的回复:)
      • NULLIF 只不过是 case 表达式的语法糖,因此 NULLIF 和 CASE 之间几乎没有或没有功能差异,在这些情况下,最好选择最简单的方法阅读(不仅适合您,也适合任何可能阅读您的查询的人)。我个人觉得这个case表达式比嵌套的NULLIFs更具可读性,但这只是个人喜好
      猜你喜欢
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      相关资源
      最近更新 更多