小编典典

如何在SQL动态查询中使用逗号分隔的字符串

sql

我有一个将从逗号分隔的字符串返回整数值的函数,它需要两个参数(@string nvarchar(4000),@ delimiter
char(1))。所以问题是如果我在动态查询中使用此函数,我会报错,这是查询

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

set @ProductIDs='1,2,3,4'
declare @query varchar(max)
--set @query= @ProductIDs +','+@Delimiter

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

Exec(@SQL)

我收到错误消息程序或函数dbo.fnDelimitedStringToTable指定了太多参数。


阅读 167

收藏
2021-04-14

共1个答案

小编典典

当您构建像这样的动态SQL时,您需要将参数用双引号引起来 ''

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

set @ProductIDs='1,2,3,4'
declare @query varchar(max)
--set @query= @ProductIDs +','+@Delimiter

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

Exec(@SQL)

这样,SQL语句将为:

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

并不是:

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