Как использовать одинарные цитаты внутри оператора транзакции 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 + "'"