1

很难在标题中浓缩我需要的东西……就是这样。这适用于 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

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

我试过了

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

但它没有用。即使当我这样做

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

结果为 NULL。

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

想法?

谢谢。


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


4

3 回答 3

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
于 2012-07-09T17:49:49.943 回答
1

尝试

select case
   coalesce(null,null,null,null,'X') 
   when 'X' then 1
   else 0
   end 
于 2012-07-09T17:48:45.780 回答
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
于 2012-07-09T17:49:24.993 回答