как использовать одинарные кавычки внутри оператора SQL транзакции - PullRequest
10 голосов
/ 26 июля 2011

Я хочу использовать одинарные кавычки внутри оператора SQL Transact, а затем выполнить этот оператор.

Например, мой запрос:

Select * FROM MyTable WHERE MyTable.Id = '1'

Теперь я хочу использовать вот так:

Declare @SQLQuery AS NVarchar(4000)
SET @SQLQuery = ' Select * FROM MyTable WHERE MyTable.Id = '1' '
Execute (@SQLQuery)

это не работает, и произошла эта ошибка:

Неверное имя столбца '1'

Я знаю, проблема в кавычках в левой и правой части1

это пример, и я хочу использовать этот способ для большого запроса

, конечно, я хочу использовать локальную переменную вместо, например, '1', и моя локальная переменная varchar

есть идеи?

Ответы [ 5 ]

17 голосов
/ 26 июля 2011

Просто избегайте цитат:

изменение

SET @SQLQuery = ' Select * FROM MyTable WHERE MyTable.Id = '1' '

до

SET @SQLQuery = ' Select * FROM MyTable WHERE MyTable.Id = ''1'' '

** Редактировать **

Чтобы включить локальную переменную в результат, вы можете обновить свой запрос следующим образом:

DECLARE @SQLQuery varchar(200)
DECLARE @tmpInt int

SET @tmpInt = 2
SET @SQLQuery = ' Select * FROM MyTable WHERE MyTable.Id = ' + 
     convert(varchar, @tmpInt) + ' '
4 голосов
/ 26 июля 2011

Удвойте одинарные кавычки в цитате!

SET @SQLQuery = ' Select * FROM MyTable WHERE MyTable.Id = ''1'' '
3 голосов
/ 26 июля 2011

Используйте двойные галочки, чтобы избежать их:

Declare @SQLQuery AS NVarchar(4000)
SET @SQLQuery = ' Select * FROM MyTable WHERE MyTable.Id = ''1'' '
Execute (@SQLQuery)

Если вы хотите использовать локальную переменную, как вы упомянули в комментарии, вы можете сделать это:

Declare @SQLQuery AS NVarchar(4000)
Declare @Id AS NVarchar(3)

SET @Id = '1'
SET @SQLQuery = ' Select * FROM MyTable WHERE MyTable.Id= ''' + @Id  + ''''
Execute (@SQLQuery)
2 голосов
/ 26 июля 2011

оберните одну одинарную кавычку в более похожую на ''', и тики тоже будут работать.

0 голосов
/ 27 июля 2011

Попробуйте вместо этого использовать двойные кавычки:

SET @SQLQuery = "Select * FROM MyTable WHERE MyTable.Id = '" + @Id + "'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...