Подтвердить что ты не робот

Как избежать квадратных скобок внутри квадратных скобок для имени поля

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

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

Конечное название столбца должно быть следующим:

Яйца [скремблированные] или Бэкон [жареные]

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

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

4b9b3361

Ответ 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]]"