Merhaba arkadaşlar;
Uzun zaman kullanmamış olduğumdan dolayı kullanımını unuttuğum; fakat bi iş için gerekince tekrar araştırdığım bir sql komutunu sizlerle paylaşmak istiyorum. Bir sorguda, elimizdeki sabit ya da değişken bir ifadenin (bundan sonra a diye anılacak), farklı bir veri (bundan sonra b diye anılacak ) ile kıyaslanması gerektiğini düşünelim. Eğer a ile b birbirine eşit ise c yi, değil ise d yi çalıştırmasını isteyelim. Bu tip bir durumda decode komutu oldukça kullanışlı bir hal almaktadır. Gerek değerleri doğru sıra ile parantez içine yazmamız durumda çok basit bir şekilde istediğimiz sonuca ulaşmış olacağız.
Kullanımı :
---------------
decode (a,b,c,d)
a=b ise c yi yap a≠b ise d yi yap
Şimdi ne demek istediğimizi somut bir örnekle ele alalım..
Sql imiz:
---------
SELECT
status, description, information defect_reasoncode,
error_begintime, application_system,
workaround_solut, workaround
FROM
busuness_flow
WHERE
status
LIKE
DECODE ('CLOSED', 'Seçiniz...', '%%', 'CLOSED') -- ilk CLOSED alanı drop down listten seçilen alanı temsil etmektedir...
Şimdi isterseniz yukarıdaki örneğimizi açıklayalım. ve sonucunda ne yapmak istediğimiz belirtelim.
Yukarıdaki sql bir tane grid wiew i doldurmak için kullanılıyor. Bu grid içinde bir takım filtreleme işlemleri ise bir tane drop down list tarafından yapılıyor. Drop down listimizin varsayılan değeri Seçiniz... busuness_flow tablomuzdaki status alanı bazı değerleri tutmaktadır. Drop down listimizin içinde yer alan alanlardan bir tanesi de CLOSED. Eğer drop down listten hiç bir seçim yapılmamışsa o zaman hiç bir filtreleme işlemi yapılmadan ('%%') grid i olduğu gibi doldurur. Tabi tabloyu olduğu gibi doldurma işlemi CLOSED dışındaki herhangi bir seçim için de geçerlidir. Yani eşitlik sağlanmadığı sürece gridimizde hiç bir filtreleme olmayacaktır.
Şimdi biraz daha kapsamlı bir örnek verelim. Bu örneğimiz yukarıdakinin biraz gelişmiş hali. Yine giridi drop down list den gelen değerlere göre dolduruyoruz. Fakat, burada doldurma işlemini tek bir drop down list ile değil, 3 farklı drop down list den gelen değerlere göre dolduracağız. Burada da decode oldukça işimizi görecektir. Çünkü birden fazla drop down list olduğundan dolayı bunlardan bazılarının Seçiniz.. olarak gelme olasılığı var. Bu durumda da sql imiz hata alacak ya da hatalı çalışacaktır.
Şimdi örnek sql i verelim.
-----------
SELECT
status,problem_severity, defect_area,
defect_reasoncode, application_system,
workaround_solut, workaround
FROM
busuness_flow
WHERE
status
like decode('CLOSED','Seçiniz...','%%','CLOSED')
and problem_severity
like decode('HIGH','Seçiniz...','%%','HIGH')
and defect_area
like decode('BC','Seçiniz...','%%','BC')
and defect_reasoncode like decode('Seçiniz...','Seçiniz...','%%','Seçiniz...')
and workaround_solut like decode('No','','%%','No')
and workaround like decode('','','%%','')
Bu sql üzerinde herhangi bir açıklama yapma ihtiyacı dudymadım. Çünkü bir üst örnek ile aralarında sadece drop down list sayısı ve buna bağlı olarak da kullanılan decode kullanım sayısı farklılık göstrermektedir.
Evet arkadaşlar. Örneğimizi tamamladık. Umarım faydalı olmuştur. İlerleyen zamanlarda Bir data grid wiew i drop down list ile nasıl doldurabileceğimizi anlatmaya çalışalım. Bakalım ne zaman.... :)
Kaydol:
Kayıt Yorumları (Atom)
SQL – LIKE Operatörü ve Kullanımı – Ders 13
YanıtlaSilSQL konusunda en çok sevdiğim ve sık sık kullandığım operatörlerin başında LIKE operatörü geliyor. Doğru bir şekilde filtreleme yaptığınızda istediğiniz sonuçlara rahatlıkla ulaşabiliyorsunuz. Peki bu tam olarak ne işe yarıyor? Belirttiğiniz tablo ve sütundaki metinleri, karakterlerine göre filtreleme işlemi yapıyor. Örnekler üzerinde daha rahat anlayacağınızı düşünüyorum.
https://www.dogushan.com/sql-like-operatoru-ve-kullanimi-ders-13/