Найти зарезервированные ключевые слова в TSQL - PullRequest
2 голосов
/ 16 июня 2011

Я не уверен, есть ли какая-либо встроенная функция в SQL Server 2008, которая сообщит, является ли это зарезервированным ключевым словом или нет.

Причина, по которой я хотел это сделать, заключается в том, что я иногда нахожу столбецимена используют то же имя, что и зарезервированные ключевые слова, например, столбец с именем «desc», «user», «state» и т. д., который затем мы должны заключить в квадратные скобки ([desc], [user],[состояние]), чтобы иметь возможность правильно запрашивать столбцы.

Если такая встроенная функция существует, то мы, вероятно, можем сделать

if isReservedKeyword (@name) = true
  set @column = REPLACE(@column, @name, '[' + @name+ ']')
else
  set @column = @name

Ответы [ 3 ]

5 голосов
/ 16 июня 2011

Существует встроенная функция, которая позаботится об этом, а также «необычные» символы: QUOTENAME :

Возвращает строку Юникода с добавлены разделители для ввода строка допустимый SQL Server с разделителями Идентификатор.

В следующем примере символьная строка abc [] def и использует [и] символы для создания действительного Идентификатор с разделителями в SQL Server.

SELECT QUOTENAME('abc[]def')

Вот набор результатов.

[abc[]]def]

(1 row(s) affected)

Обратите внимание, что правая скобка в строка abc [] def удваивается для обозначения escape-персонаж.

5 голосов
/ 16 июня 2011

Зарезервированные слова документированы здесь:
http://msdn.microsoft.com/en-us/library/ms189822.aspx

Этот список является исчерпывающим, но это не так долго, что вы не можете просто повторно ввести их в свою таблицу базы данных для проверки.

4 голосов
/ 16 июня 2011

Просто поставьте скобки вокруг каждого столбца.Таким образом вы гарантируете, что позаботятся даже о зарезервированных словах.

...