Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как игнорировать в запросе параметры со значением NULL?  [new]
posdnyaa
Member

Откуда:
Сообщений: 45
Здравствуйте.
Имеется таблица в базе данных со столбцами, например: col_1, col_2, col_3
И три переменных с такими же именами (для простоты): @col_1, @col_2, @col_3.
В общем случае, когда все три переменные заданы, запрос будет выглядеть так:
SELECT * FROM myTable
WHERE col_1=@col_1 AND col_2=@col_2 AND col_3=@col_3.
Однако реально задача несколько сложнее. Каждый из этих параметров может иметь значение NULL. Тогда если к примеру параметр @col_2=NULL, то из таблицы надо выбрать не записи со значением NULL, а вообще все. Т.е. запрос будет эквивалентен такому:
SELECT * FROM myTable
WHERE col_1=@col_1 AND col_3=@col_3
Конечно можно было бы реализовать такое с помощью IF, но т.к. число параметров может быть больше трех, то хотелось бы применять более универсальный способ.
Вот только какой??? Подскажите пожалуйста.
22 июн 09, 10:58    [7326723]     Ответить | Цитировать Сообщить модератору
 Re: Как игнорировать в запросе параметры со значением NULL?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Переменное число критериев отбора в запросе
22 июн 09, 10:59    [7326729]     Ответить | Цитировать Сообщить модератору
 Re: Как игнорировать в запросе параметры со значением NULL?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
https://www.sql.ru/faq/faq_topic.aspx?fid=114
22 июн 09, 10:59    [7326730]     Ответить | Цитировать Сообщить модератору
 Re: Как игнорировать в запросе параметры со значением NULL?  [new]
Saller
Member

Откуда: exUSSR
Сообщений: 1141
Так не пробовал?:
SELECT *
FROM myTable
WHERE (col_1=@col_1 OR @col_1 is null)
AND (col_2=@col_2 OR @col_2 is null)
AND (col_3=@col_3 OR @col_3 is null)
22 июн 09, 11:23    [7326926]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить