У меня есть хранимая процедура, которая принимает несколько параметров, которые могут быть NULL или, возможно, нет.Использовать ISNULL или "LIKE"
Я могу использовать опцию ISNULL, если у меня есть четкое значение для параметра, но если я хочу использовать «LIKE» вместо null, я не уверен, как это сделать. Смотрите ниже:
Параметры являются:
@org_id as int,
@deleted as bit = NULL,
@firstname as char = NULL,
@lastname as char = NULL
Выберите утверждение:
select user_id, firstname,lastname,firstname +' ' + lastname as fullname, email, phone, is_tech, is_admin,is_cust
from users
where [email protected]_id and is_tech=1 and delete_flag=ISNULL(@deleted,delete_flag)
order by lastname,firstname asc
Если Firstname и фамилия PARAMS не равны нулю, но вместо того, чтобы символ, например, «J», как может Я пишу что-то похожее на предложение delete_flag .. и первое имя типа «J%», но если не использовать null?
Любые идеи?
Убедитесь, что вы положили скобки вокруг двух частей, когда у вас есть больше, чем просто то, что выше. –
Хм ... не кажется, что работает с parens также .. где users.org_id = 'at'org_id и is_tech = 1 и delete_flag = ISNULL (' at'deleted, delete_flag) и (firstname LIKE 'at'firstname или 'at'firstname равно null) .... Я выполняю SP и только передаю в org_id, он работает, но когда я передаю, например, «D» как первое имя ничего не появляется, и я знаю, что есть пользователь с именем, начинающимся с «D» – thegunner
@thegunner Что не работает? Показывать запрос, если это возможно, на http://sqlfiddle.com с тестовыми данными. –