Как использовать одинарные цитаты внутри оператора транзакции sql

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

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

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

любая идея?

Ответ 1

Просто выйдите из кавычек:

изменить

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

to

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) + ' '

Ответ 2

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

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

Ответ 3

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

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)

Ответ 4

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

Ответ 5

База данных Oracle позволяет использовать квадратные скобки вместо двойных одинарных кавычек, таких как v = '[qry]'. Это очень удобно, когда у вас есть код с множеством одинарных кавычек. Вы можете просто протестировать запрос и скопировать его в квадратные скобки, не беспокоясь об изменении одинарных кавычек.

Есть ли подобная опция на сервере sql?

Ответ 6

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

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