Как избежать квадратных скобок внутри квадратных скобок для имени поля - PullRequest
15 голосов
/ 20 мая 2011

У меня есть динамический SQL, который генерирует имена столбцов. Быстрый пример может быть что-то вроде этого:

SELECT dbo.getSomething(123) [Eggs[scrambled] or Bacon[fried]]

Окончательное имя столбца должно быть таким:

яйца [омлет] или бекон [жареные]

Если я попытаюсь выполнить это, произойдет ошибка в слове ИЛИ (даже если я заменю его на xyz, он все равно выдаст ошибку в этом токене). Проблема исправлена, если я уберу внутренние наборы квадратных скобок. Поэтому я пришел к выводу, что вы не можете вложить квадратные скобки, если не избежите их.

Как мне избежать их в этом случае?

Ответы [ 4 ]

23 голосов
/ 20 мая 2011

Вы можете использовать функцию quotename, чтобы увидеть правильное экранирование.

select quotename('Eggs[scrambled] or Bacon[fried]') 

Возвращает

[Eggs[scrambled]] or Bacon[fried]]]

Таким образом, все закрывающие квадратные скобки должны быть удвоены.

8 голосов
/ 20 мая 2011

Повесьте ] на конец строки []

   SELECT [Eggs[scrambled]] or Bacon[fried]]] FROM Yummy
4 голосов
/ 20 мая 2011

SET QUOTED_IDENTIFIER включено по умолчанию, поэтому не нужно ничего экранировать

SELECT 1 AS "[Eggs[scrambled] or Bacon[fried]]"
1 голос
/ 18 июля 2018

В операторе SQL SSIS, запрашивающем лист Excel, необходимо заключить квадратные скобки в круглые скобки, чтобы выбрать отдельные столбцы.Например, чтобы выбрать «My Column [Great Column]», вы должны выбрать «My Column (Great Column)] ОТ [$ A1: AX10000]

...