SQL’de ignore paradigması

Flash Bilgiler  T-SQL  Şubat 14, 2015

Eğer SQL dilinde birşeyler geliştiriyorsanız muhtemelen benim gibi sizde bazen sorguya tüm parametrelerin gelmeme ihtimalini göz önüne almış olabilirsiniz. Mesela bir arama formunda birden fazla arama alanından dolu olanları filitrelemek istiyorsanız işte yapmanız gereken şey bu örnekte bulunmakta.

CREATE TABLE iletisim 
    (
     id int identity primary key, 
     isim varchar(20), 
     mail varchar(30)
    );
 
INSERT INTO iletisim
(isim, mail)
VALUES
('halit', 'halit@sqlfiddle.com'),
('ahmet', 'ahmet@sqlfiddle');

Yukarıda basitçe bir tablo oluşturduk ve iki kayıt giriyoruz. Şimdi bu kayıt üzerinde escape yöntemiyle sorgu kuralım.

DECLARE @kimo varchar(20);

--set @kimo = 'halit';

select * from iletisim
where (isim = @kimo or @kimo IS NULL);

Yukarıda ki kod bloğunda commentlenen satır kimo değişkenini setliyor. Tabi şu anda kimo değeri null ve where şunu düşünüyor isim ile kimo eşit olacak ama durun kimo null ise bunu kontrol etmeme gerek yok! Yani satır commentli iken tüm kayıtlar geliyor. Satırın commenti kaldırıldığında ise durum değişiyor kimo artık null değil ve isim alanı kimo ya eşit olanları araması mecbur. Dışardan parametre mantığıyla alabileceğiniz gibi string ifade içerisinde de aynı şekilde direk null e eşitleyerek de çalışabilirsiniz. Yani string SQL komutunuz şu olur ise,

select * from iletisim
where (isim = NULL or NULL IS NULL);

tüm kayıtlar dökülür aynı zamanda tam tersi şekilde stringi şu şekilde oluşturursanız

select * from iletisim
where (isim = 'halit' or 'halit' IS NULL);

bu durumda da sadece isim değeri halit olanlar gelir. Her ne kadar T-SQL üzerinde yapılmış olsa da bu örnek tüm SQL lerde aynı mantık çalışmaktadır.

Uygulamanın demosu SQLFiddle üzerinde şu adrestedir, deneyebilirsiniz. http://sqlfiddle.com/#!6/aedc4/5/0

Ayrıca resimde de farklı bir tabloda değişkenin değerini değiştirerek iki sonuç ürettim ona da bakabilirsiniz.

Esenlikle…

Bu yazı 1608 defa görüntülendi

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Yazar Hakkında

15 yıllık çalışma hayatında birçok proje geliştirmiş binlerce projeyi inceleme fırsatı bulmuş yazılım aşığıdır. İşini hobi olarak gören yazarımız iş hayatını profesyonelce zevkle sürdürmektedir.

Son Eklenenler