SELECT语句需要以NULL数据为条件输出值

时间:2012-07-09 17:45:17

标签: sql-server-2008

很难在标题中浓缩我需要的东西......就在这里。这适用于SQL Server 2008。

由于这里解释的原因太长,我需要有一个SELECT语句,如果4列的值为null,则会在其他列中显示值1。这样的事情。

SELECT name, lastname, p1, p2, p3, p4, "1 if p1,p2,p3 and p4 are all NULL, 0 otherwise" city, st, zip
FROM mytable

问题是我如何翻译成代码:“1如果p1,p2,p3和p4都是NULL,否则为0”

我试过

CASE len(p1+p2+p3+p4) WHEN NULL 1 ELSE 0 END

但它没有用。即使我做的时候

SELECT len(p1+p2+p3+p4) FROM mytable

结果是iS NULL。

我尝试过IF ELSE,但在SELECT语句中似乎不受欢迎。

想法?

感谢。


谢谢你们。 我选择了不使用COALESCE的答案,因为它是我理解的答案。我尝试在这里阅读MS的解释:http://msdn.microsoft.com/en-us/library/ms190349.aspx我仍然没有完全理解,加上注释说“至少有一个空值必须是一个类型化的NULL”让我有些害怕。 谢谢大家。


3 个答案:

答案 0 :(得分:3)

SELECT name, lastname, p1, p2, p3, p4, CASE WHEN COALESCE(p1, p2, p3, p4) IS NULL THEN 1 ELSE 0 END AS nulltest, city, state, zip
FROM mytable

答案 1 :(得分:1)

尝试

select case
   coalesce(null,null,null,null,'X') 
   when 'X' then 1
   else 0
   end 

答案 2 :(得分:1)

试试这个:

    SELECT name, lastname, 
CASE WHEN  (p1 is null and p2 is null and p3 is null and p4 is null) then 1 
else 0 end , city, st, zip
    FROM mytable