在SQL中检查表中列数据的可用性?

时间:2013-07-18 12:31:37

标签: sql sql-server sql-server-2008

我有表TestTable,其中我有几列说

            C1  | C2 | C3 | c4
            'ab'|  1 | 09 |          //CASE1 [ must return 1]
                |    |    |          //CASE2 [ must return 0]

如果有任何列数据,我想检查该表中的数据是否存在我希望我的值为1,如果所有列都为空(无数据)那么我希望我的值为0

任何人都可以提供帮助,我不知道在我面前有这种情况。

1 个答案:

答案 0 :(得分:6)

您可以使用COALESCE命令尝试以下查询:

SELECT CASE WHEN COALESCE(C1,C2,C3,C4) IS NULL THEN 0 ELSE 1 END
FROM TestTable

如果空值实际上不是NULL而是空字符串,则查询可以更改为:

SELECT CASE WHEN C1+C2+C3+C4 = '' THEN 0 ELSE 1 END
FROM TestTable

或者,可能是检查NULL和空字符串的最佳变体:

SELECT CASE WHEN COALESCE(C1,'')+COALESCE(C2,'')+COALESCE(C3,'')+COALESCE(C4,'') = '' THEN 0 ELSE 1 END
FROM TestTable