Присвоение нулевого значения параметру не дает результата ... Почему? - PullRequest
0 голосов
/ 07 февраля 2012

Пожалуйста, посмотрите на запрос ниже

declare @t table(roleid int null,EmailAddress varchar(50) null)
insert into @t select null,'fghfgf' union all select 1,null union all select 2,'xcfgcgcfg'
select * from @t

declare @role_id int = null
select EmailAddress from @t where roleid = @role_id

Если я передам 1 0r 2 в качестве значения @role_id, я смогу получить правильный адрес электронной почты. Однако он отказывается возвращать результат в случае, если значение присваивается как NULL.

Как я могу заставить программу работать в обоих случаях?

Спасибо

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012

в SQL (разновидность MS) операция с NULL возвращает false. Вам нужно

select EmailAddress from @t where role_id IS NULL OR roleid = @role_id
1 голос
/ 07 февраля 2012

Ничто никогда не == ноль в T-SQL (и ANSI SQL, если я помню).

Попробуйте where roleid = @role_id OR @role_id is null

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