SQL de escape karakteri kullanmak

Bazen sql de select çekerken aramak istediğimiz kriter SQL in önceden aktarılmış karakterlerinden biri olabilir. Örnek olarak aşağıdaki gibi bir script oluşturalım ve #zz şeklinde geçici bir tablo yaratalım.

select '%Master Deneme Deneme' Adi,1 ID into #zz

insert into #zz
select '%Deneme 1' ,2
union all
select 'Deneme 2', 3
union all
Select 'Slave',4
union all
select 'Slave % deneme', 5

Şimdi bu tabloda, Adi alanında % karakteri olan satırları getirmek istediğimizi farzedelim. Eğer bunu yapmak için

Select * from #zz where adi like '%%%'

yazarsak tablodaki bütün sonuçların döneceğini görürüz. Fakat bizim istediğimiz kayıtlar bunlar değildi. Biz sadece Adi alanı içinde % karakteri geçen satırların listelenmesini istemiştik. Böyle durumlarda yapmamız gereken şey diğer dillerde olduğu gibi ESCAPE karakteri kullanmak. Diğer birçok dilden farklı olarak bu gibi durumlarda SQL de escape karakterimizi kendimiz belirleriz. Yukarıdaki sorunumuzun çözümü olarak aşağıdaki kodu yazmamız gerekir

select * from #zz where adi like '%/%%' escape('/')

Burada belirlediğimiz / karakteri, ondan sonra gelen karakterin aktarılmış bir karakter değil, herhangi diğer bir karakter olduğu anlamına gelir. Yani anlayacağınız üzere ‘/’ yerine ‘a’ da yazabilirdik. Bu durumda sql ‘a’ dan bir sonraki karakter sql in herhangi birşey için kullandığı özel bir karakter olsa bile onu bu özel durumuyla değil diğer karakterleri değerlendirdiği gibi normal bir karakter olarak değerlendirirdi.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir