Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment utiliser une chaîne séparée par des virgules dans une requête dynamique en SQL

Lorsque vous construisez un SQL dynamique comme celui-ci, vous devez envelopper votre paramètre entre guillemets doubles ''

declare @ProductIDs varchar(11)
declare @SQL varchar(max)

set @ProductIDs='1,2,3,4'
declare @query varchar(max)
--set @query= @ProductIDs +','[email protected]

SELECT @SQL = 'SELECT val FROM dbo.[fnDelimitedStringToTable]('''+ @ProductIDs +''' , '','')'

Exec(@SQL)

De cette façon, l'instruction SQL sera :

SELECT val FROM dbo.[fnDelimitedStringToTable]('1,2,3,4' , '','')

et non :

SELECT val FROM dbo.[fnDelimitedStringToTable](1,2,3,4 , '','')