[] скобки в операторах sql - PullRequest
       13

[] скобки в операторах sql

26 голосов
/ 30 сентября 2008

Что делают скобки в выражении sql?

Например, в утверждении:

insert into table1 ([columnname1], columnname2) values (val1, val2)

Кроме того, что он делает, если имя таблицы в скобках?

Ответы [ 8 ]

43 голосов
/ 30 сентября 2008

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

select [Order qty] from [Client sales]

Они также должны избегать зарезервированных ключевых слов, используемых в качестве идентификаторов

13 голосов
/ 30 сентября 2008

Это нестандартный синтаксис Microsoft SQL Server для «идентификаторов с разделителями». SQL поддерживает разделители для идентификаторов, позволяющие именам таблиц, имен столбцов или других объектов метаданных содержать следующее:

  • SQL зарезервированные слова: «Заказ»
  • Слова, содержащие пробелы: "Order qty"
  • Слова, содержащие знаки препинания: "Заказ-кол-во"
  • Слова, содержащие международные символы
  • Имена столбцов, которые с учетом регистра: «Заказ» против «Заказ»

Microsoft SQL Server использует квадратные скобки, но это не тот синтаксис, который стандарт SQL использует для идентификаторов с разделителями. Стандартно, двойные кавычки должны использоваться для разделителей.

В Microsoft SQL Server вы можете включить режим использования стандартных двойных кавычек для разделителей следующим образом:

SET QUOTED_IDENTIFIER ON;
5 голосов
/ 30 сентября 2008

Они предназначены для экранирования зарезервированных ключевых слов или неверных идентификаторов столбцов.

CREATE TABLE test
(
  [select] varchar(15)
)

INSERT INTO test VALUES('abc')

SELECT [select] FROM test
2 голосов
/ 30 сентября 2008

Они позволяют использовать ключевые слова (например, date ) в названии столбца, таблицы и т. Д. *

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

1 голос
/ 30 сентября 2008

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

0 голосов
/ 27 января 2016

При наличии имен таблиц или имен файлов с пробелами или тире (-) и т. Д. Вы можете получить «Ошибка Systax в предложении FROM». Используйте [] скобки, чтобы решить эту проблему.

См .: https://msdn.microsoft.com/en-us/library/ms175874.aspx

0 голосов
/ 12 марта 2013

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

0 голосов
/ 30 сентября 2008

Это просто разделители, которые позволяют вам помещать специальные символы (например, пробелы) в имя столбца или таблицы. например

insert into [Table One] ([Column Name 1], columnname2) values (val1, val2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...