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

19

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

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

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

3 ответа

40

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

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

От 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
источник
  • (Они могут указывать любой идентификатор, а не только столбцы.) –  Mar 28 '12 at 23:41 29.03.2012 в 01:41
  • , что имеет смысл, все имена столбцов, у которых есть [], также имеют место в их именах. однако, удалив пространство и [] вручную, дизайнер таблиц все еще автоматически добавляет []? –  Bonk 29.03.2012 в 01:42
  • @YonkShi Это, вероятно, делает это для согласованности (нет необходимости беспокоиться о том, конфликтует ли оно с ключевым словом или содержит специальные символы и т. д.), даже если это не требуется. Если есть опция генерации, чтобы отключить такую ​​(например, глобальную настройку?), Она останется такой, какой она есть. –  29.03.2012 в 01:43
  • отлично, спасибо! –  Bonk 29.03.2012 в 01:45
  • Мне кажется странным, что я должен указать скобки вокруг «Адрес», который отсутствует в списке зарезервированных ключевых слов ?! –  Jowen 06.05.2014 в 13:43
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 для «Многие приложения по умолчанию используют обозначение в скобках, чтобы еще больше уменьшить риск синтаксических ошибок», являясь фактическим ответом. –  onedaywhen 29.03.2012 в 10:29
1

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

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

declare my column nvarchar(50)

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

declare [my column] nvarchar(50)

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

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