Sql ifadelerinde köşeli parantez [] kullanımı nedir?


164

Visual Studio 2008'in sql sütun adlarının etrafına köşeli ayraç yerleştirdiğini fark ettim. Parantezler herhangi bir avantaj sağlıyor mu? T-SQL kodunu verdiğimde onlarla hiç uğraşmadım.

Misal:

Görsel stüdyo:

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

Benim kendi yolum:

SELECT column1, column2 etc...

El kodlu SQL'in hiçbir zaman parantezlere ihtiyaç duymaması iyi bir şeydir, veritabanı adlandırma kuralınız parantez gerektiren adları hariç tutmalıdır.
Christian Oudard

İlgili cevap QUOTED_IDENTIFIER ayarını tartışıyor: stackoverflow.com/questions/19657101/…
Jared Beck

9
Köşeli parantezlerin Microsoft bir tuhaflık olduğunu da ekleyebilirim. SQL Standardı aslında "Microsoft'un da desteklediği çift ​​tırnak işareti ( ) kullanır . Microsoft, her şeyi sınırlama gereğini hissettiyse, bunun yerine standart çift tırnak kullanmak daha iyi bir form olurdu. Ama sanırım bu başka bir
DBMS'ye bağlanmayı

Yanıtlar:


182

Sütun adlarında veya tanımlayıcılarında anahtar kelimeler veya özel karakterler kullanıyorsanız köşeli ayraçlar gereklidir. Bir sütunu adlandırabilirsiniz [First Name](boşluklu) - ancak o sütuna her başvuruda bulunduğunuzda parantez kullanmanız gerekir.

Yeni araçlar, her durumda veya tutarlılık için her yere ekler.


3
köşeli parantezlerin tek amacı bu mu?


2
sql ayrıca, normal ifadeler kullanarak sonuçları sınırlamak için belirli bir sorgunun benzer operatörünün köşeli ayraçlarını da kullanır. codeproject.com/Articles/33941/SQL-LIKE-Operator
Jens Frandsen

2
Ayrıca, adlandırılan bir sütun adı tanımlayabilirsiniz selectancak select select from mytablebir hata atar, böylece select [select] from mytablegeçerli bir sorgu yapar. SQL yönetim stüdyosunuzda ne renk olursa olsun, bunları sütun / tablo / sp / vb adları olarak kullanmak istiyorsanız köşeli parantez içine alınmalıdır. MySQL'de açılı tek tırnaklar `` `` bunun karşılığı olacaktır.
Barry Güvenkaya

2
Otomatik oluşturulan sorguların HER ŞEY etrafında köşeli parantez kullandığını biliyorum. Ancak Microsoft çok tembel olduğu için, acutally gerekli olup olmadığını kontrol edin. Kare parantezleri yalnızca kesinlikle gerekli olduğunda kullanmalısınız.
NoName

59

Sütunlarınız SQL anahtar kelimeleriyle aynı ada sahipse veya içinde boşluklar varsa kullanışlıdır.

Misal:

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

Oh hayır! 'Kullanıcı' anahtar kelimesinin yanında yanlış sözdizimi. Ama bu:

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

İyi çalışıyor.


@Blordbeard bu Microsoft SQL Server'a özgü bir şey mi yoksa köşeli parantezler de Oracle, mySQL, PostgreSQL vb. İçin aynı şekilde çalışıyor mu?
user3700562

4
Parantezler standart SQL değildir, tüm DB motorlarının hangi karakterleri kullandığından emin değildir. Örneğin: MySQL backticks kullanıyor: stackoverflow.com/questions/2889871/…
Blorgbeard

12

Örneğin, belirli karakterler içeren sütun adları kullanıyorsanız (bazı nedenlerden dolayı) kullanışlıdırlar.

Select First Name From People

işe yaramaz, ancak sütun adının etrafına köşeli parantez koymak işe yarar

Select [First Name] From People

Kısacası, bir nesne adını açıkça bildirmenin bir yoludur; sütun, tablo, veritabanı, kullanıcı veya sunucu.


6

Sütun adları, sorgu yürütme motorunu karıştıracak karakterler ve ayrılmış kelimeler içerebilir, bu nedenle her zaman etraflarına parantez koymak bunun olmasını engeller. Bir konuyu kontrol etmekten ve sonra bununla uğraşmaktan daha kolay sanırım.


5

Köşeli ayraçlar, sütun adları ayrılmış sözcükler olduğunda kullanılabilir.

SQL deyimini, denetlemediğiniz bir sütun adları koleksiyonundan programlı olarak oluşturuyorsanız, her zaman köşeli parantezleri kullanarak sorunlardan kaçınabilirsiniz.


5

Ayrılmış sözcükleri kullanmaktan kaçınan bir adlandırma kuralına uymaksızın, Microsoft yeni ayrılmış sözcükler ekler. Köşeli parantez kullanmak, önce Microsoft'un yeni ayrılmış sözcüklerini istemci kodunuzdan düzenlemenize gerek kalmadan kodunuzun yeni bir SQL Server sürümüne yükseltilmesine olanak tanır. Bu düzenleme önemli bir endişe kaynağı olabilir. Projenizin erken emekli olmasına neden olabilir ....

Köşeli ayraçlar ayrıca bir komut dosyasında Tümünü Değiştirmek istediğinizde de yararlı olabilir. Toplu işinizde @String adlı bir değişken ve [String] adlı bir sütun varsa, @String'i @NewString olarak yeniden adlandırmadan sütunu [NewString] olarak yeniden adlandırabilirsiniz.


5

1990'larda SQL'in karanlık çağlarında, SQL tasarımcıları sözlükteki her kelimeyi yeni özelliklerin sonsuz çığına anahtar kelime olarak eklemeye çalıştıkları ve buna SQL3 taslağı olarak adlandırdıkları için iyi bir uygulamadır.

Böylece ileri uyumluluğu korur.

Ve başka bir güzel yan etkisi olduğunu buldum, kod incelemelerinde ve yeniden düzenleme grep kullandığınızda çok yardımcı olur.


4

Buna ek olarak, bazı Sharepoint veritabanları adlarında kısa çizgiler içerir. SQL Deyimlerinde köşeli parantez kullanılması, adların doğru ayrıştırılmasına izin verir.


3

Onları tutarlılık için oraya eklediğine inanıyorum ... sadece sütun adında bir boşluk veya özel bir karakteriniz olduğunda gereklidir, ancak IDE SQL ürettiğinde bunları her zaman dahil etmek daha temizdir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.