экранировать кавычки внутри кавычек в строке TSQL - PullRequest
1 голос
/ 24 сентября 2010

Я пытаюсь выполнить следующий оператор TSQL в Microsoft SQL 2008

DECLARE @tmpMessage nvarchar(max)

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

exec sp_executesql @tmpMessage

вышеприведенный код не работает, потому что одинарные кавычки перед test закрывают главные кавычки около секундыоператор выбора выбор идентификатора из ссылок ....

и да, я должен сначала поместить свое утверждение в строку перед тем, как его выполнить, потому что функция openquery не позволяет мнесделайте что-нибудь вроде

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

любые предложения будут оценены.

заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 24 сентября 2010

Вот шаблон, который я использую, когда имею дело с переменными в выражении 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)
0 голосов
/ 24 сентября 2010

Вы также можете попробовать команду QUOTENAME .

...