在 SQL 服务器中检查多个值为 NULL 的列

Check multiple columns with value NULL in SQL Server

目前我有以下sql声明:

SELECT CASE 
    WHEN sd.GV01 IS NULL 
         AND sd.GV02 IS NULL 
         AND sd.GV03 IS NULL 
         AND sd.GV04 IS NULL 
         AND sd.GV05 IS NULL
         AND sd.CountryId = '4' THEN 4
    END AS rating
FROM masterData sd

我试着用同样的方式用一个更简短的定义:

SELECT CASE 
    WHEN NULL IN (sd.GV01, sd.GV02, sd.GV03, sd.GV04, sd.GV05)
         AND sd.CountryId = '4' THEN 4
    END AS rating
FROM masterData sd

但我没有得到 return 值,为什么?谁能给我一个更好的解决方案?

你的方法很好。 NULL 值 returns NULL 的几乎任何比较——都被视为假。

您可以使用 COALESCE():

SELECT (CASE WHEN COALESCE(sd.GV01, sd.GV02, sd.GV03, sd.GV04, sd.GV05) IS NULL AND
                  sd.CountryId = '4'
             THEN 4
        END) AS rating
FROM masterData sd;