Как избежать квадратных скобок внутри квадратных скобок для имени поля
У меня есть динамический SQL, который генерирует имена столбцов. Быстрый пример может быть примерно таким:
SELECT dbo.getSomething(123) [Eggs[scrambled] or Bacon[fried]]
Конечное название столбца должно быть следующим:
Яйца [скремблированные] или Бэкон [жареные]
Если я попытаюсь запустить это, это будет ошибка в слове OR (даже если я заменил его на xyz, это все еще ошибки на этом токене). Проблема исправлена, если я вынимаю внутренние наборы квадратных скобок. Поэтому я пришел к выводу, что вы не можете вставлять квадратные скобки, если вы каким-то образом не избежите их.
Как избежать этого в этом случае?
Ответы
Ответ 1
Вы можете использовать функцию quotename
, чтобы увидеть правильное экранирование.
select quotename('Eggs[scrambled] or Bacon[fried]')
Возвращает
[Eggs[scrambled]] or Bacon[fried]]]
Таким образом, все закрывающие квадратные скобки должны быть удвоены.
Ответ 2
Повесьте ]
в конец строки []
SELECT [Eggs[scrambled]] or Bacon[fried]]] FROM Yummy
Ответ 3
SET QUOTED_IDENTIFIER по умолчанию включен, поэтому ничего не нужно бежать
SELECT 1 AS "[Eggs[scrambled] or Bacon[fried]]"