Яке використання квадратних дужок [] у операторах sql?


163

Я помітив, що Visual Studio 2008 розміщує квадратні дужки навколо імен стовпців у sql. Чи надають дужки якусь перевагу? Коли я передаю код T-SQL, я ніколи не переймався ними.

Приклад:

Візуальна студія:

SELECT [column1], [column2] etc...

Мій власний шлях:

SELECT column1, column2 etc...

Добре, що у ручному кодуванні SQL ніколи не були потрібні дужки, у вашій базі даних про іменування бази даних повинні бути виключені імена, які потребують дужок.
Крістіан Оудар

Пов'язані установити відповідь обговорюється QUOTED_IDENTIFIER: stackoverflow.com/questions/19657101 / ...
Джаред Бек

8
Можу додати, що дужки - це химерність Microsoft. Стандарт SQL фактично використовує подвійні лапки ( "), які також підтримує Microsoft . Якби Microsoft відчула необхідність розмежувати все, було б краще використовувати замість цього стандартні подвійні лапки. Але я думаю, що це зробило б занадто легким перехід на іншу СУБД, і це ніколи не зробить…
Manngo

Відповіді:


181

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

Новіші інструменти додають їх скрізь на всякий випадок або для послідовності.


3
це єдине призначення квадратних дужок?

1
@mehow, здається, що так, але я не маю посилання, що вказувало б це явно.
Майкл Харен


2
sql також використовує квадратні дужки у подібному операторі вибору запиту для обмеження результатів, використовуючи регулярні вирази. codeproject.com/Articles/33941/SQL-LIKE-Operator
Jens

2
Ви також можете визначити ім'я стовпця, яке називається, selectале воно select select from mytableпризведе до помилки, тому select [select] from mytableзробить його дійсним запитом. Яке б слово не стало барвистим у вашій студії управління SQL, слід оточити його дужками, якщо ви хочете використовувати їх як імена стовпців / таблиць / sp / тощо. У MySQL одиничні лапки `` `були б еквівалентом цьому.
Barry Guvenkaya

59

Вони зручні, якщо ваші стовпці мають ті ж назви, що й ключові слова SQL, або у них пробіли.

Приклад:

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

О ні! Неправильний синтаксис біля ключового слова "користувач". Але це:

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

Добре працює.


@Blordbeard це щось специфічне для Microsoft SQL Server чи квадратні дужки також працюють однаково для Oracle, mySQL, PostgreSQL тощо?
користувач3700562

4
Дужки не є стандартними SQL, не впевнені, які символи використовують усі двигуни БД. Наприклад: MySQL використовує зворотні лапки: stackoverflow.com/questions/2889871 / ...
Blorgbeard виходить

12

Вони корисні, якщо ви (чомусь) використовуєте назви стовпців із певними символами, наприклад.

Select First Name From People

не буде працювати, але поставити квадратні дужки навколо назви стовпця буде добре

Select [First Name] From People

Коротше кажучи, це спосіб явного оголошення імені об'єкта; стовпчик, таблиця, база даних, користувач або сервер.


6

Імена стовпців можуть містити символи та зарезервовані слова, які будуть заплутати механізм виконання запитів, тому розміщення дужок навколо них у будь-який час запобігає цьому. Простіше, ніж перевірити проблему, а потім вирішити її.


5

Дужки можна використовувати, коли назви стовпців є зарезервованими словами.

Якщо ви програмно генеруєте оператор SQL з колекції імен стовпців, якими ви не керуєте, то ви можете уникнути проблем, завжди використовуючи дужки.


5

Незалежно від дотримання норм іменування, що уникає використання зарезервованих слів, Microsoft додає нові зарезервовані слова. Використання дужок дозволяє оновити ваш код до нової версії SQL Server, без попереднього необхідності редагувати недавно зарезервовані слова Microsoft із коду вашого клієнта. Таке редагування може викликати серйозне занепокоєння. Це може спричинити дострокове звільнення вашого проекту ....

Дужки також можуть бути корисні, коли ви хочете замінити все в сценарії. Якщо ваша партія містить змінну з назвою @String та стовпець з назвою [String], ви можете перейменувати стовпець у [NewString], не перейменовуючи @String у @NewString.


5

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

Так він підтримує сумісність вперед.

І я виявив, що він має ще один приємний побічний ефект, він дуже допомагає, коли ви використовуєте grep в оглядах коду та рефакторингу.


4

Крім того, деякі бази даних Sharepoint містять дефіси у своїх іменах. Використання квадратних дужок у SQL-операторах дозволяє правильно аналізувати імена.


3

Я вважаю, що він додає їх туди для послідовності ... вони потрібні лише тоді, коли у назві стовпця є пробіл або спеціальний символ, але більш чітко просто їх включати весь час, коли IDE генерує SQL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.