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

Откуда: оттуда
Сообщений: 3149
Возможно ли в MS SQL подобное условие:

select ... from ...

where column1=str1,str2,str3

чтобы не использовать OR
8 ноя 12, 10:10    [13437649]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли условие  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
karamba85
Возможно ли в MS SQL подобное условие:

select ... from ...

where column1=str1,str2,str3

чтобы не использовать OR
column1 IN(str1,str2,str3);
Но сервер это всё равно понимает (и преобразует у себя) как OR
8 ноя 12, 10:13    [13437667]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли условие  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31965
karamba85
Возможно ли в MS SQL подобное условие:

select ... from ...

where column1=str1,str2,str3

чтобы не использовать OR
Да, см IN
where column1 IN (str1,str2,str3)
8 ноя 12, 10:14    [13437673]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли условие  [new]
karamba85
Member

Откуда: оттуда
Сообщений: 3149
Ага, спасибо. А если у меня весь запрос в функции. И мне нужно передать str1,str2,str3, как переменную, причем кол-во str различное, т.е. может быть:
column1 IN(str1,str2,str3) или column1 IN(str2,str3) или column1 IN(str1,..,strn);
8 ноя 12, 10:24    [13437745]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли условие  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31965
karamba85
мне нужно передать str1,str2,str3, как переменную
Тогда в зависимости от версии, можно передавать в табличном параметре, либо xml, либо строку, которую потом парсить (во втором и третьем случае вставлять в таблицу-переменную)

Потом джойнить таблицу с этими значениями в запросе.
8 ноя 12, 10:28    [13437767]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли условие  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
DECLARE @str NVARCHAR(MAX)=N'V1,V2,V3';
SELECT * FROM T WHERE N','+@str+N',' LIKE N'%,'+F+N',%';
Где T - таблица, F - поле, V1,V2,V3 - значения в строковом параметре через запятую.
Про индексы стыдливо промолчу

https://www.sql.ru/articles/mssql/03060701arraysandlistsinsqlserver.shtml (правда, для функции динамический SQL не годится).
8 ноя 12, 10:58    [13437952]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить