动态SQL中的字符串连接

gun*_*erz 1 t-sql sql-server-2008

我想将参数传递给包含动态SQL的存储过程.

例如,

DECLARE @sql NVARCHAR(1000)
SET @sql = 'select '+ @columnnames + ' from tablename'
EXECUTE(@sql)

但@columnnames是一个在运行时创建的字符串,通过连接2个字符串,
如@columnnames = a +''+ b

然而,这似乎不起作用.我想我需要逃避单引号.我试过传递
一个+ \'\'+ b,但这也不起作用.

有什么建议?

Nik*_*vić 6

declare @columnnames nvarchar(1000)
set @columnnames = 'a' + ' + '' '' + ' + 'b'
Run Code Online (Sandbox Code Playgroud)

产生

select a + ' ' + b from tablename
Run Code Online (Sandbox Code Playgroud)

在结果varchar中需要撇号时使用撇号两次.