Значение квадратных скобок [] в конструкторе таблиц MS-SQL?
У меня есть копия существующей базы данных с существующими записями. когда я играл с дизайнером таблиц и заметил, что некоторые имена столбцов имеют [] вокруг них. кажется, что все они имеют произвольный тип (float, datetime, netext, nvarchar и т. д.), и в свойствах столбца нет ничего, что избавляло бы от []. Я попытался переименовать удалить [], но он появляется снова, как только я выйду из редактирования.
Согласно этому сообщению, это столбец ключевых слов для столбцов XML? но ни один из этих столбцов не является столбцами XML. Будет ли кто-нибудь любезно объяснить цель этого новичку MS-SQL? Спасибо
3 ответа
Квадратные скобки []
используются для разделения идентификаторов. Это необходимо, если имя столбца является зарезервированным ключевым словом или содержит специальные символы, такие как пробел или дефис.
Некоторые пользователи также любят использовать квадратные скобки, даже если они не нужны.
Из MSDN:
Идентификаторы с разделителями
Заключены в двойные кавычки (") или квадратные скобки ([ ]). Идентификаторы, которые соответствуют правилам формата идентификаторов, могут разделяться или не разделяться.
SELECT * FROM [TableX] --Delimiter is optional. WHERE [KeyCol] = 124 --Delimiter is optional.
Идентификаторы, которые не соответствуют всем правилам для идентификаторов, должны быть разделены в операторе Transact-SQL.
SELECT * FROM [My Table] --Identifier contains a space and uses a reserved keyword. WHERE [order] = 10 --Identifier is a reserved keyword.
Квадратные скобки могут быть размещены вокруг объектов (например, представления, базы данных, столбцы и т. Д.)
Как упоминал Марк, их основная цель заключается в инкапсуляции объектов, чтобы специальные символы, такие как пробел или точка, не мешали вашему синтаксису.
Многие приложения по умолчанию используют обозначения в скобках, чтобы еще больше снизить риск синтаксических ошибок или чего-либо подобного.
Обычно хорошей практикой является не включать пробелы
Database_Name < GOOD PRACTICE
Database Name < GENERALLY TRY TO AVOID
В любом случае, если используется последний, вы можете использовать квадратные скобки, т.е.
select * from [Database Name]
Скобки - это специальные символы на сервере sql, которые используются для явного разграничения информации.
их можно использовать в xml согласно статье, их также можно использовать для указания мета-имен (столбец, таблица и т. д.), в которых есть пробелы или другие ключевые слова.
declare my column nvarchar(50)
будет неверный синтаксис, но вы могли бы сделать
declare [my column] nvarchar(50)
просто думайте о них как о явных разделителях.