Проверьте несколько столбцов со значением NULL в SQL Server - PullRequest
0 голосов
/ 02 октября 2019

В настоящее время у меня есть следующий 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

Но я не получаю возвращаемых значений, Почему? Может кто-нибудь дать мне лучшее решение?

1 Ответ

2 голосов
/ 02 октября 2019

Ваш метод в порядке. Почти любое сравнение NULL значений возвращает 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;
...