在TSQL字符串中的引号内转义引号

时间:2010-09-24 12:38:32

标签: tsql string quotes

我正在尝试在Microsoft SQL 2008上运行以下TSQL语句

DECLARE @tmpMessage nvarchar(max)

SET @tmpMessage = 'select * from openquery(GLive,''select ID from Links WHERE [HREF] LIKE ''test'''')';

exec sp_executesql @tmpMessage

上述代码无效,因为测试之前的单引号会关闭第二个选择语句周围的主要引号从链接中选择ID ....

是的,我必须在执行它之前先将我的语句放在字符串中,因为 openquery 函数不允许我做某些事情,如

select * from openquery(GLive,'select ID from Links WHERE [Href] LIKE ''' + @Var + ''''')

任何建议都会受到赞赏。

提前感谢。

2 个答案:

答案 0 :(得分:4)

这是我在处理链接服务器的openquery语句中的变量时使用的模板:

DECLARE @UniqueId int
, @sql varchar(500)
, @linkedserver varchar(30)
, @statement varchar(600)

SET @UniqueId = 2

SET @linkedserver = 'LINKSERV'
SET @sql = 'SELECT DummyFunction(''''' + CAST(@UniqueId AS VARCHAR(10))+ ''''') FROM DUAL'
SET @statement = 'SELECT * FROM OPENQUERY(' + @linkedserver + ', ' 
SET @Statement = @Statement + '''' +  @SQL + ''')'
EXEC(@Statement)

答案 1 :(得分:0)

您也可以试用QUOTENAME命令。