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

17

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

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

    
задан Bonk 29.03.2012 в 01:38
источник

3 ответа

36

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

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

От 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.
    
ответ дан Mark Byers 29.03.2012 в 01:39
источник
4

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

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

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

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

Database_Name < GOOD PRACTICE

Database Name < GENERALLY TRY TO AVOID

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

select * from [Database Name]
    
ответ дан Michael Capobianco 29.03.2012 в 01:48
источник
1

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

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

declare my column nvarchar(50)

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

declare [my column] nvarchar(50)

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

    
ответ дан mson 29.03.2012 в 01:47
источник