Какая польза от квадратных скобок [] в операторах sql? - PullRequest
144 голосов
/ 10 сентября 2008

Я заметил, что Visual Studio 2008 помещает квадратные скобки вокруг имен столбцов в sql. Есть ли в скобках преимущество? Когда я передаю код T-SQL, я никогда не беспокоился о них.

Пример: Visual Studio: ВЫБЕРИТЕ [column1], [column2] и т.д ...

Мой собственный путь: ВЫБРАТЬ столбец1, столбец2 и т. Д. *

Ответы [ 9 ]

157 голосов
/ 10 сентября 2008

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

Более новые инструменты добавляют их везде на всякий случай или для согласованности.

49 голосов
/ 10 сентября 2008

Они удобны, если ваши столбцы имеют те же имена, что и ключевые слова SQL, или в них есть пробелы.

Пример:

create table test ( id int, user varchar(20) )

О нет! Неверный синтаксис рядом с ключевым словом «пользователь». Но это:

create table test ( id int, [user] varchar(20) )

Работает нормально.

12 голосов
/ 10 сентября 2008

Они полезны, если вы (по какой-то причине) используете имена столбцов с определенными символами, например.

Select First Name From People

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

Select [First Name] From People

Короче говоря, это способ явного объявления имени объекта; столбец, таблица, база данных, пользователь или сервер.

6 голосов
/ 10 сентября 2008

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

5 голосов
/ 10 сентября 2008

Скобки можно использовать, когда имена столбцов являются зарезервированными словами.

Если вы программно генерируете оператор SQL из набора имен столбцов, которые вы не контролируете, то вы можете избежать проблем, всегда используя скобки.

4 голосов
/ 23 июня 2012

Дополнительно Некоторые базы данных Sharepoint содержат дефисы в своих именах. Использование квадратных скобок в выражениях SQL позволяет правильно анализировать имена.

3 голосов
/ 07 ноября 2015

Независимо от соблюдения соглашения об именах, в котором не используются зарезервированные слова, Microsoft добавляет новые зарезервированные слова. Использование скобок позволяет обновить ваш код до новой версии SQL Server, без необходимости сначала редактировать недавно зарезервированные слова Microsoft из вашего клиентского кода. Это редактирование может быть серьезной проблемой. Это может привести к преждевременному выходу на пенсию вашего проекта ....

Скобки также могут быть полезны, когда вы хотите заменить все в сценарии. Если ваш пакет содержит переменную с именем @String и столбец с именем [String], вы можете переименовать столбец в [NewString], не переименовывая @String в @NewString.

3 голосов
/ 10 сентября 2008

Я полагаю, что он добавляет их туда для согласованности ... они требуются только в том случае, если в имени столбца есть пробел или специальный символ, но удобнее включать их все время, когда IDE генерирует SQL. *

2 голосов
/ 05 июня 2016

Во времена мрачного века SQL в 1990-х годах это была хорошая практика, поскольку разработчики SQL пытались добавить каждое слово в словарь в качестве ключевого слова для бесконечной лавины новых функций, и они назвали его черновиком SQL3.

Так что это поддерживает прямую совместимость.

И я обнаружил, что у него есть еще один приятный побочный эффект, он очень помогает, когда вы используете grep в обзорах кода и рефакторинге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...