Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL 2012 условие по ID IN (1,2,3,4) как сделать чтобы работало по строке ID IN ('1,2,3,4')  [new]
Pvase
Member

Откуда:
Сообщений: 990
Есть запрос, в котором есть условие по полю ID IN (1,2,3,4). Надо передавать эти значения как параметры. К сожалению параметр имеет четкий тип, а такое значение можно передать как строку. Как сделать так, чтобы работало условие: ID IN ('1,2,3,4'), где поле Id имеет тип Int?
Понятно что можно сделать динамический запрос, присвоив его переменной и выполнить его как текст через EXEC:
Declare @TextZap VarChar(2000)
SET @TextZap = 'SELECT * FROM Table WHERE ID ('+@Param+')'
EXEC @TextZap 

но может есть другой вариант без использования EXEC?
p.s.
Это запрос получения данных через провайдер OLE DB в SSIS, где условия надо передавать по параметру.
3 июл 15, 10:07    [17847125]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2012 условие по ID IN (1,2,3,4) как сделать чтобы работало по строке ID IN ('1,2,3,4')  [new]
Glory
Member

Откуда:
Сообщений: 104760
Pvase
но может есть другой вариант без использования EXEC?

Парсите вашу переменную, например, в таблицу.
3 июл 15, 10:09    [17847144]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2012 условие по ID IN (1,2,3,4) как сделать чтобы работало по строке ID IN ('1,2,3,4')  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
','+@Param+',' LIKE '%,'+CAST(ID AS VARCHAR)+',%'
3 июл 15, 10:13    [17847166]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2012 условие по ID IN (1,2,3,4) как сделать чтобы работало по строке ID IN ('1,2,3,4')  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
iap
','+@Param+',' LIKE '%,'+CAST(ID AS VARCHAR)+',%'
Про индексы - забыть!
3 июл 15, 10:13    [17847168]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2012 условие по ID IN (1,2,3,4) как сделать чтобы работало по строке ID IN ('1,2,3,4')  [new]
Pvase
Member

Откуда:
Сообщений: 990
Glory
Pvase
но может есть другой вариант без использования EXEC?

Парсите вашу переменную, например, в таблицу.

Тоже так думаю. Все остальное будет очень медленно (есть таблицы по несколько миллионов записей, а это поле как раз входит в индекс).
3 июл 15, 10:25    [17847236]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2012 условие по ID IN (1,2,3,4) как сделать чтобы работало по строке ID IN ('1,2,3,4')  [new]
ПаWWWлОдАрЕц
Member

Откуда: NSK-PVL
Сообщений: 135
Glory
Парсите вашу переменную, например, в таблицу.


+1
3 июл 15, 13:46    [17848596]     Ответить | Цитировать Сообщить модератору
 Re: SQL 2012 условие по ID IN (1,2,3,4) как сделать чтобы работало по строке ID IN ('1,2,3,4')  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
ПаWWWлОдАрЕц
Glory
Парсите вашу переменную, например, в таблицу.


+1
-100500
А я не согласен!
Зачем формировать какую-то строку, чтобы передать её куда-то, где придётся парсить обратно и т.д.?!
Надо сразу формировать параметры в табличном виде.
SQL Server как раз и предназначен для обработки табличных данных!
3 июл 15, 13:48    [17848617]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить