Значение квадратных скобок [] в дизайнере таблиц MS-SQL?

У меня есть копия существующей базы данных с существующими записями. когда я играл с дизайнером таблицы и заметил, что некоторые из имен столбцов вокруг них. все они кажутся произвольными (float, datetime, netext, nvarchar и т.д.), и нет ничего в свойствах столбца, которые избавляются от []. Я попытался переименовать delete [], но он снова появляется, как только я выхожу из редактирования.

согласно this post, это столбец ключевых слов для столбцов xml? но ни один из этих столбцов не является столбцом xml. Кто-то любезно объяснит цель этого для новичка ms-sql? спасибо

Ответ 1

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

Некоторые пользователи также предпочитают использовать квадратные скобки, даже если они не нужны.

От 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.

Ответ 2

Квадратные скобки могут быть размещены вокруг объектов (например, представлений, баз данных, столбцов и т.д.)

Их основная цель, как отметил Марк, - инкапсулировать объекты, чтобы специальные символы, такие как пробел или период, не мешали вашему синтаксису.

Многие приложения по умолчанию используют условное обозначение в скобках, чтобы еще больше уменьшить риск синтаксических ошибок или чего-либо подобного.

Как правило, хорошая практика не включает пробелы

Database_Name < GOOD PRACTICE

Database Name < GENERALLY TRY TO AVOID

В любом случае, если последний используется, вы можете использовать квадратные скобки i.e.

select * from [Database Name]

Ответ 3

скобки являются специальными символами в sql-сервере, которые используются для явной разграничения информации.

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

declare my column nvarchar(50)

будет недопустимым синтаксисом, но вы могли бы сделать

declare [my column] nvarchar(50)

просто подумайте о них как о явных разделителях.