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

Откуда:
Сообщений: 15
День добрый, уважаемые сиквелоиды! Подскажите, пожалуйста, можно ли красиво передать функции параметр в WHERE?
24 июн 16, 18:55    [19333271]     Ответить | Цитировать Сообщить модератору
 Re: Параметр в WHERE  [new]
vlad2016
Member

Откуда:
Сообщений: 15
Извиняюсь за неполное сообщение. Имелась ввиду подставить конструкцию типа:

"and id is not null"
"and id is null"
"and id = any"

без динамического sql.
24 июн 16, 18:58    [19333290]     Ответить | Цитировать Сообщить модератору
 Re: Параметр в WHERE  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31778
vlad2016
Имелась ввиду подставить конструкцию типа:

"and id is not null"
"and id is null"
"and id = any"

без динамического sql.
То есть можно ли выполнять произвольную строку как SQL, без динамического SQL? Нельзя.
У вас же "подставить конструкцию" - это подставить произвольную строку как выражение в WHERE?
Или вопрос конкретно про обработку параметра для поля "id"?
24 июн 16, 20:25    [19333534]     Ответить | Цитировать Сообщить модератору
 Re: Параметр в WHERE  [new]
vlad2016
Member

Откуда:
Сообщений: 15
alexeyvg
То есть можно ли выполнять произвольную строку как SQL, без динамического SQL? Нельзя.
У вас же "подставить конструкцию" - это подставить произвольную строку как выражение в WHERE?
Или вопрос конкретно про обработку параметра для поля "id"?

Нет, речь не про произвольный код в общем, а именно манипуляции с функциями notnull и nullif в WHERE, с подстановкой параметра для тройного фильтра по полю null, not null и всех вместе.

Вот уже дома дошел до такого варианта. Может кто-то придумает красивее?

WHERE isnull (CASE WHEN ID IS NOT NULL THEN 1 END, 0) IN (@param1, @param2)
24 июн 16, 22:47    [19333975]     Ответить | Цитировать Сообщить модератору
 Re: Параметр в WHERE  [new]
i-i
Guest
krasivee? legko

WHERE soundex(cast(isnull (CASE WHEN ID IS NOT NULL THEN 1 END, 0) as varchar(20))) IN (soundex(@param1), soundex(@param2))
24 июн 16, 23:09    [19334076]     Ответить | Цитировать Сообщить модератору
 Re: Параметр в WHERE  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
vlad2016,

формируйте запрос на стороне клиента как угодно красиво.
27 июн 16, 11:36    [19339175]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить