Как вернуть как нулевые, так и ненулевые значения в одном запросе - PullRequest
2 голосов
/ 21 июля 2011

У меня есть целочисленное поле person_id со значением по умолчанию NULL. Я использую хранимую процедуру и вытягиваю имена и адреса людей. если пользователь не передает значение, все записи извлекаются как нулевые, так и не нулевые. Как мне это сделать. Может быть, заявление о случившемся или нет?

my_procedure(          <--- this is pseudo code
@person_id int null
begin
select name, address from PERSON
WHERE person_id like case NULL then NULL else '%'
end

Нуль требует -> ЕСТЬ НУЛЬ число требует = 123

EDIT Мне тоже нужно условие, если ничего не пропущено, все значения вытягиваются. Если что-то передается, это значение ищется

Ответы [ 2 ]

1 голос
/ 21 июля 2011

WHERE (@personID is NULL OR personid IS NULL OR personid = @personid)

Просто поместите оба дела в скобки WHERE.

EDIT

Добавлено еще одно предложение OR, чтобы охватить то, что я ДУМАЮ , о котором вы просите.

0 голосов
/ 22 июля 2011

Правильный код в этом случае:

IsNULL(mycolum,'') LIKE CASE when person_id is null then '%' else '%' + person_id + '%' 

IsNULL охватывает нулевые значения в пустую строку, и тогда вы можете беспокоиться только о строках, а не нулевых значениях.

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