2011-05-20 34 views
11

Sütun adları üreten dinamik SQL'im var. Nihai sütun adı bu olmalıAlan adı için köşeli parantez içinde köşeli parantezlerden nasıl ayrılır

SELECT dbo.getSomething(123) [Eggs[scrambled] or Bacon[fried]] 

: Hızlı bir örnek şöyle bir şey olabilir

Yumurta [şifreli] veya Bacon [kızartılmış]

ben çalıştırmayı denerseniz Bu, OR kelimesinde hata verecektir (xyz ile değiştirmese bile hala bu belirtecin üzerindeki hatalar). İç köşeli parantezleri çıkarırsam problem çözülür. Sonuç olarak, bir şekilde kaçmadıkça köşeli parantezler yerleştiremezsiniz.

Bu durumda bunlardan nasıl kurtulurum?

cevap

18

Sen doğru kaçışa görmek quotename işlevini kullanabilirsiniz ucunda bir ].

select quotename('Eggs[scrambled] or Bacon[fried]') 

İade

[Eggs[scrambled]] or Bacon[fried]]] 

nedenle tüm kapanış köşeli parantez iki katına gerekmektedir.

8

Hang inline []

SELECT [Eggs[scrambled]] or Bacon[fried]]] FROM Yummy 
+0

kaçmak için varsayılan olarak AÇIK. –

+0

@Joe: Martin'in cevabının kesinlikle en iyisi olduğunu kabul etmelisiniz, çünkü sadece kuralı açıklamakla kalmaz, aynı zamanda doğru adın nasıl otomatik olarak üretileceğini de gösterir (yani StackOverflow'u sormadan). –

+0

@Andriy His aslında kuralı açıklamıyor (oysaki bu). Sadece kendimi bulmam gereken bir örneği var. –

3

SET QUOTED_IDENTIFIER Sana isterim kabul cevabı hem verebilir böylece gerek için herşeyi

SELECT 1 AS "[Eggs[scrambled] or Bacon[fried]]" 
+3

Hiçbir şeyden kaçmaya gerek olmadığı doğru değil. Tırnaklar hala kaçmaya ihtiyaç duyacaktır! –

+0

@Martin: lordy haklısın. TFI Cuma – gbn

+0

Kaçan tırnaklar "SELECT 1 AS" [Yumurta "" karıştırılmış "" veya Bacon [kızarmış]] "' anlamına gelir? – LaBracca

İlgili konular