2012-01-24 8 views
7

Ben SQL Server için bir sql sorgusunda [kaçmak gerekir ve bunu joker gibi davranmak istemiyorum. Denedim:sql server: [?] Aslında bir şey daha önce [arıyorum</p> <pre><code>select * from sometable where name like '[something]'; </code></pre> <p>

select * from sometable where name like ''[something]'; 

Ama bu hata mesajı alıyorum:

Msg 102, Düzey 15, State 1, Hat 1 yanlış sözdizimi yakın 'bir şey'. Msg 105, Düzey 15, Durum 1, Satır 1 karakter dizesinden sonra kapsanmamış tırnak işareti ';

+2

olası bir kopyası [LIKE yan tümcesinde köşeli parantezlerden nasıl kurtulabilirim?] (Http://stackoverflow.com/questions/439495/how-can-i-escape-square-brackets-in-a-like -clause) – onedaywhen

cevap

6

Kullanımı:

select * from sometable where name like '[[]something[]]'; 

siz de kullanabilirsiniz:

select * from sometable where name like '\[something\]' escape '\'; 

LIKE (Transact-SQL) on MSDN anlatılmıştır Sen [[] içinde gömmek gerekir.

+0

Evet! İşe yaradı!! Tüm yorumlar için çok teşekkür ederim! – user840930

0

İşte küçük bir örnek kod.

SELECT FirstName 
    FROM (SELECT '[Test]' AS FirstName) as t 
WHERE FirstName LIKE '[[]%' 
4

yerleştir [[] yılında

declare @T table 
(
    name varchar(20) 
) 

insert into @T values 
('abc'), 
('[abc') 

select * 
from @T 
where name like '[[]a%' 

Sonuç:

name 
-------------------- 
[abc 

Eğer like ifadede neler yapabileceğini burada bakın. LIKE (Transact-SQL)

+1

Düzenli ifadeler kullandığını belirtmek yardımcı olabilir, bu nedenle [...] kabul edilebilir bir karakter kümesini gösterir. Ve işte bu çözümün nedeni budur. – weston

+1

@weston - Cevabı, bu konuyla ilgili tüm bilgileri okuyabileceğiniz bir bağlantıyla güncelledik. –