SQL Server Bir Alt Çizgi Kaçış


339

Alt çizgi karakterinden nasıl kaçarım?

Aşağıdaki maddeye benzer bir şey yazıyorum ve sonunda _d ile gerçek girdileri bulmak istiyorum.

Where Username Like '%_d'

Yanıtlar:


524

GİBİ için T-SQL Referansı :

Joker karakter desenini karakterleri değişmez karakterler olarak kullanabilirsiniz. Bir joker karakteri değişmez karakter olarak kullanmak için, joker karakteri parantez içine alın. Aşağıdaki tabloda LIKE anahtar sözcüğünü ve [] joker karakterlerini kullanmanın birkaç örneği gösterilmektedir.

Davanız için:

... LIKE '%[_]d'

oh adamım! ... hala çalışmıyorsa, sütunun doğru olduğundan emin olun.
Jens Frandsen

198

Açıkçası @Lasse çözümü doğrudur, ancak sorununuzu çözmenin başka bir yolu daha vardır: T-SQL operatörü LIKE, bir sonraki karakterden kalıba kaçacak bir karakter bildirmenizi sağlayan isteğe bağlı ESCAPE deyimini tanımlar .

Sizin durumunuz için aşağıdaki WHERE cümleleri eşdeğerdir:

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';

43
Resmi tamamlamak için: ESCAPEyan tümce SQL standardının bir parçasıdır ve yalnızca SQL Server üzerinde değil, herhangi bir DBMS üzerinde çalışır.
a_horse_with_no_name

2

Bu çözümler tamamen mantıklı. Ne yazık ki, ikisi de beklediğim gibi benim için çalıştı. Onunla uğraşmaya çalışmak yerine, bir çalışma ile gittim:

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name


0

Bunların hiçbiri benim için SSIS v18.0'da işe yaramadı, bu yüzden böyle bir şey yapardım: ..burada alt çizgileri olan

WHERE CHARINDEX('_', thingyoursearching) < 1

dizeleri görmezden gelmeye çalışıyorum. Alt çizgisi olan şeyleri bulmak istiyorsanız, ters çevirin:

WHERE CHARINDEX('_', thingyoursearching) > 0

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.