Son Haberler
Anasayfa / ORACLE / Oracle SELECT Sorgularında KOŞUL Cümleleri Nasıl Kullanılabilir?

Oracle SELECT Sorgularında KOŞUL Cümleleri Nasıl Kullanılabilir?

Oracle ile veritabanı üzerinde sorgulama yaparken çeşitli kolonlarda yer alan verilerin kontrol edilmesi ve bunun sonucuna göre bir takım sonuç verilerinin üretilmesi istenebilir.

Bu durumlarda kullanım şekillerini anlatacak olduğum oracle yerel fonksiyonlarından yardım sağlayabilirsiniz.

 

  • CASE
  • NVL
  • NVL2
  • DECODE
  • NULLIF()
  • GREATEST()
  • LEAST()
  • COALESCE()

CASE

Bir verinin bir çok şart arasından uygun olanına göre belirli bir işleme tabi tutularak sonuç üretmesi için kullanılabilir.

Örnek:

emp tablosundan ename ve sal kolonları okunur ve sal kolonu okunurken şayet 1000’e eşit ise İSTENEN DÜZEY,
1000’den büyük ise AŞIRI ve 1000’den küçük ise de ASGARİ bilgisinin DURUM kolonu altında yazması sağlanabilir.
NVL

NVL komutu NVL(a,b) olarak kullanılır. Şayet a kolonu NULL(boş) ise b olarak belirlenen sonuç fonksiyon sonucu olarak alınır.

Örnek:

emp tablosunda ename kolonu boş ise test kolonunda Sekercioglu.eu bilgisi görünecektir.
NVL2

NVL2 komutu NVL2(a,b,c) olarak kullanılır. Şayet a kolonu boş ise b olarak belirlenen sonuç değilse c olarak belirlenen sonuç fonksiyon sonucu olarak alınır.

Diğer bir deyişle; tablomuzda 2 farklı adres bilgisi olduğunu düşünelim ve eğer 2. adres alanı boş ise 1. adres alanının geçerli olması ve aksi halde de 2. adresin geçerli olmasını isteyelim.

DECODE

Tabloda yer alan kolonların içeriğine göre gerektiğinde matematiksel yada string fonksiyonlardan yararlanarak işlemler yapılır ve fonksiyon sonucuna göre decode işlemine tabi tutulabilir.

Örnek olarak a ile b kolonlarının eşitlik ve büyüklük tanımlarını incelemek istediğimizde aşağıdaki gibi bir fonksiyon yazabiliriz.

Buradaki abs matematik fonksiyonu a-b matematiksel işleminin MUTLAK değerini almaya yarar.

Buna göre; DECODE (sorgulanacak veri, karşılaştırma bilgisi, sonuç,… ) sıralaması şeklinde yazılabilir. Şimdi örneğimize dönecek olursak;

işleminde tablomuz tablosundan a ve b kolonları isteniyor ve decode işlemi ile a-b nin mutlak değeri ile a-b reel değeri karşılaştırılıyor.

  • Eğer mutlak ve reel değer birbirine eşit ise A>B sonucu üretiliyor.
  • Eğer mutlak değer sonucu 0(SIFIR) ise A ile B eşit sonucu üretiliyor.
  • Eğer tüm bu sonuçlara uymuyorsa A<B sonucu üretiliyor.

NULLIF()

NULLIF(a,b) şeklinde kullanılır. Şayet a ile b birbirine eşit ise NULL değeri üretilir.

GREATEST()

Greatest(a,b) olarak kullanılır hangi değer daha büyük ise sonuç olarak o kolon verisi döner.

Örnek;

sorgusundan sonuç olarak deger kolonunda 200 verisi dönecektir.

LEAST()

LEAST(a,b) olarak kullanılır hangi değer daha küçük ise sonuç olarak o kolon verisi döner.

Örnek;

sorgusundan sonuç olarak deger kolonunda 100 verisi dönecektir.

COALESCE()

COALECCE(a,b,c) olarak kullanılır a b ve c kolonlarından hangisinde veri varsa sırasına göre boş olmayan ilk kolondaki veri döner.

Örnek;

isim is_tel cep_tel ev_tel
Burak 231-2531 322-7813 465-9901
Ada NULL 372-5588 212-4088
Ata NULL NULL 394-7477

sorgusunda rehber tablosundan isim, is_tel, cep_tel ve ev_tel bilgileri istenir. COALESCE işlemine göre aşağıdaki sonuç tablosu üretilir.
Sonuç:

İsim iletisim_numarasi
Burak 231-2531
Ada 372-5588
Ata 394-7477

Umarım bu yazı faydalı olmuştur.

Çünkü zaman zaman bir sorgu oluşturmamız gerektiğinde çok basit sorunlarda bile takılıp kalmamız olasıdır.