как поймать значения NULL с помощью оператора case - PullRequest
9 голосов
/ 18 января 2010

здесь в этом запросе я хочу заменить значения в Person.Contact базы данных Adventureworks на некоторые новые значения. Приведенный ниже оператор запроса отлично работает для других значений, но я не могу изменить значения, указанные в NULL. Я использую SQL Server. Любая помощь приветствуется.

select contactid,Title,FirstName,MiddleName,
case MiddleName
when 'R.' then 'Robert'
when 'B.' then 'Bids'
when 'J.' then 'John'
when is null then 'New Name'
else 'No Name'
end, LastName from Person.Contact

Ответы [ 3 ]

16 голосов
/ 18 января 2010
case 
when MiddleName is null then ...
when MiddleName = 'R' then ...
end
12 голосов
/ 18 января 2010

Я бы использовал функцию ISNULL - она ​​вернет заданное значение, если поле NULL:

select contactid,Title,FirstName,MiddleName,
case ISNULL(MiddleName, 'NULLVALUE')
when 'R.' then 'Robert'
when 'B.' then 'Bids'
when 'J.' then 'John'
when 'NULLVALUE' then 'New Name'
else 'No Name'
end, LastName from Person.Contact
2 голосов
/ 12 января 2017

Извините, что опубликовал 7 лет спустя, но я пытался найти решение для Interbase / Firebird, и этот пост продолжал появляться. Ни одно из решений здесь не работает, потому что нет ISNULL, поэтому я решил, что помогу всем, кто может прийти сюда в поисках этого:

select contactid,Title,FirstName,MiddleName,
case COALESCE(MiddleName, 'NULLVALUE')
when 'R.' then 'Robert'
when 'B.' then 'Bids'
when 'J.' then 'John'
when 'NULLVALUE' then 'New Name'
else 'No Name'
end, LastName from Person.Contact
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...