动态SQL中的字符串连接

时间:2012-06-11 08:01:46

标签: sql-server-2008 tsql

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

例如,

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

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

然而,这似乎不起作用。我想我需要逃避单引号。我试过过去了  a + \'\'+ b,但这也不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

declare @columnnames nvarchar(1000)
set @columnnames = 'a' + ' + '' '' + ' + 'b'

产生

select a + ' ' + b from tablename

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

答案 1 :(得分:0)

你错过了一个逗号......

set @columnnames = a + ',' + b