反向COALESCE

时间:2010-04-21 13:34:49

标签: sql sql-server sql-server-2005 tsql

SQL Server 2005中是否有一个函数返回NULL [或布尔值]如果任何参数(任何类型)为NULL,这将使我免于编写{{1} }。

5 个答案:

答案 0 :(得分:4)

这是一种适度不愉快的方式:

set ansi_nulls off
if (null in (a, b, c, d, e) print 'got a null'
set ansi_nulls on

答案 1 :(得分:1)

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

答案 2 :(得分:0)

由于NULLs传播,你可以这样做:

(cola + colb + colc) is null

假设所有兼容的数据类型

答案 3 :(得分:0)

怎么样......

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

答案 4 :(得分:0)

我不确定SQL Server,但是在类似的数据库中(我在这里使用的配置单元在语法上更接近于传统的DBMS)select isnull(concat(*)) from some_table;将有助于检查是否有任何列是{{1 }}。

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