Любой способ построить строку для использования в ГДЕ IN ()? - PullRequest
0 голосов
/ 16 января 2011

Я использую SQL Server 2005.

Я использую некоторые строковые функции для генерации обратной строки, которая всегда имеет этот формат:

Число, Число, Число, Число

Я пытаюсь использовать эту сгенерированную строку следующим образом:

select LastName from User 
Where ID in (
subtring(<returning the format shown above>)
)

Я получаю сообщение об ошибке: сообщение 8114, уровень 16, состояние 5, строка 3 Ошибка преобразования типа данных varchar в числовой.

Это имеет смысл, что если WHERE IN () передается в строке, это не сработает - так как обычно он принимает целые числа, разделенные запятыми.

Есть ли способ выполнитьЯ здесь пытаюсь?

Спасибо!

1 Ответ

1 голос
/ 16 января 2011

Динамический SQL должен сделать свое дело.

declare @ids varchar(100) set @ids = '1,2,3,4,5,6,7'

declare @sql nvarchar(200) set @sql = N'select LastName from User Where ID in (' + @ids + N')'

exec sp_executesql @sql

См. http://msdn.microsoft.com/en-us/library/aa933299(v=sql.80).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...