В операторе «LIKE» необходимо выбрать значения «NULL» (БД) - PullRequest
2 голосов
/ 24 февраля 2010

Это один типичный вопрос, заданный моему боссу ..

Q: как выбрать значение, равное нулю в базе данных, используя оператор LIKE.

Я попробовал, как показано ниже:

select c.ClaimID from claim c
where c.InjuredPartyFirstName like (''+coalesce(c.InjuredPartyFirstName,'')+'') 

Но это тоже не работает ........

Пожалуйста, помогите кому-нибудь

Заранее спасибо ... Vinay K

Ответы [ 3 ]

4 голосов
/ 24 февраля 2010

Почему бы не использовать

select c.ClaimID from claim c where c.InjuredPartyFirstName IS NULL 

Если это какой-то странный тест, попробуйте

select c.ClaimID from claim c 
where ISNULL(c.InjuredPartyFirstName, '') like ''
2 голосов
/ 24 февраля 2010

Фильтрация по значениям NULL выполняется так:

select c.ClaimID 
from claim c 
where c.InjuredPartyFirstName IS NULL
0 голосов
/ 24 февраля 2010

Таким образом, правильный ответ на хитрый вопрос вашего босса заключается в том, что вы не можете сделать это напрямую с LIKE, если не хотите замедлить запрос, сначала объединив нулевые значения. И затем объясните ему / ей , почему NULL НЕДЕЙСТВИТЕЛЕН и не должен иметь возможность применять LIKE непосредственно к нему.

Редактировать: может быть, это просто проверка вашего босса, чтобы отфильтровать джедаев от претендентов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...