代码之家  ›  专栏  ›  技术社区  ›  ercan

凝聚的逆

  •  9
  • ercan  · 技术社区  · 14 年前

    SQL Server 2005中是否有函数在以下情况下返回空值[或布尔值] 任何 (任何类型的)参数为空,这将使我免于写入 IF a IS NULL OR b IS NULL OR c IS NULL ... .

    5 回复  |  直到 6 年前
        1
  •  4
  •   Alex K.    14 年前

    这是一种相当不愉快的方式:

    set ansi_nulls off
    if (null in (a, b, c, d, e) print 'got a null'
    set ansi_nulls on
    
        2
  •  1
  •   Dave Markle    14 年前

    不,你最近得到的是nullif(),但这不是你想要的。我会坚持使用这里的OR语句。

        3
  •  0
  •   Jeremy    14 年前

    既然nulls支持您可以这样做:

    (cola + colb + colc) is null
    

    假设所有兼容的数据类型

        4
  •  0
  •   al.    14 年前

    怎么样。。。

    SELECT
    CASE WHEN NULLIF(ISNULL(@testA, 1), @testA) 
            + NULLIF(ISNULL(@testB, 1), @testB) 
            + NULLIF(ISNULL(@testC, 1), @testC) > 0
        THEN 'Got NULL'
        ELSE 'NO NULL'
    END
    
        5
  •  0
  •   Adiga    6 年前

    我不确定SQL Server,但在类似的数据库中(我在这里使用了hive,它在语法上更接近于传统的DBMS) select isnull(concat(*)) from some_table; 有助于检查列中是否有 NULL .

    希望在SQL Server中有一些方法可以绕过这个概念,我的建议有助于有效地解决这个问题。