использование динамического предложения IN в MSSQL - PullRequest
5 голосов
/ 04 марта 2011

Почему следующий SQL ничего не извлекает

DECLARE @Status AS VARCHAR(400)
SET @status = '''Closed'',''OPEN'''
select * from MYTABLE where status in(@status)

Пока select * from MYTABLE where status in('Closed','Open') извлекает мне строки

Ответы [ 2 ]

4 голосов
/ 04 марта 2011

Вы можете, если хотите, сделать какой-нибудь динамический SQL, но я думаю, что он не очень конкурентоспособен ..

  DECLARE   @Status nVARCHAR(400),
            @SQL nvarchar(500)

SET @status = '''Closed'''+','+'''OPEN'''
set @SQL = '
select * from [MYTABLE] where status in('+@status +')'

 exec sp_executesql @SQL
GO
4 голосов
/ 04 марта 2011

Ваш первый вопрос проверяет, существует ли значение 'Closed','OPEN' в базе данных.Значения не раскрываются.

Если вы используете SQL Server 2008 или более позднюю версию, вы можете использовать Таблица значений параметров для достижения того же результата.

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