检查 SQL Server 中值为 NULL 的多个列



目前我有以下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

但是我没有得到返回值,为什么?有人可以给我更好的解决方案吗?

你的方法很好。 几乎任何NULL值的比较都会返回NULL- 这被视为 false。

您可以使用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;

最新更新