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

Откуда:
Сообщений: 2
Господа, подскажите пожалуйста возможно ли заставить работать запрос типа

declare @result varchar(95);
set @result = '01, 01.1, 01.11, 01.11.1, 01.11.11, 01.11.11.1, 01.11.11.11, 01.11.11.110';
-- Id - varchar(12)
select * from tbl where Id in (@result)

Если каждое значение взять в кавычки - все равно не работает. Он всю эту строчку считает единым значением, что логично.

Может есть какая альтернатива? Как передать список в хр. процедуру?
24 июн 11, 19:36    [10872522]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с in и переменными  [new]
qwerty112
Guest
declare @result varchar(95);
set @result = '''01'', ''01.1'', ...';
-- Id - varchar(12)
exec('select * from tbl where Id in (' + @result +')')

>> Может есть какая альтернатива? Как передать список в хр. процедуру?
в ФАКе - есть
24 июн 11, 19:41    [10872551]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с in и переменными  [new]
meriados
Member

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

Так быстро ответили, что я теперь себя идиотом ощущаю, т к один этого не знаю:) Спасибо!
24 июн 11, 19:45    [10872564]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с in и переменными  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Массивы и Списки в SQL Server
24 июн 11, 20:00    [10872612]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с in и переменными  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31980
meriados
Господа, подскажите пожалуйста возможно ли заставить работать запрос типа

declare @result varchar(95);
set @result = '01, 01.1, 01.11, 01.11.1, 01.11.11, 01.11.11.1, 01.11.11.11, 01.11.11.110';
-- Id - varchar(12)
select * from tbl where Id in (@result)
Если каждое значение взять в кавычки - все равно не работает. Он всю эту строчку считает единым значением, что логично.

Может есть какая альтернатива? Как передать список в хр. процедуру?
Ну у вас же здесь не список, зачем усложнять?
declare @result varchar(95);
set @result = ',01,01.1,01.11,01.11.1,01.11.11,01.11.11.1,01.11.11.11,01.11.11.110,';
select * from tbl where @result like '%,' + Id + ',%'
Но скорость, конечно, для большой таблицы будет не очень :-(
24 июн 11, 22:18    [10873065]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить