Oracle veritabanlarında SQL ile SUBSTR, CASE..ELSE..END, WHEN..THEN kullanımı
Daha önceki SQL yazımızda, veritabanı üzerindeki 2 farklı kolonu kombine etmeyi ve buna göre tek alias altında sorgu içersinde kullanmayı incelemiştik.
Bu seferki yazımızda ise, mevcut bir tablo içersinde yer alan bir kolondaki verilerden parçalar almak ve bu alınan parçalara göre sanal bir kolon oluşturarak sorgumuza ait sonuçları görmeyi sağlayacağız.
SELECT
TABLO.A.KURUMNO,
TABLO.B.GRUPKODU,
TABLO.C.OZELKOD,
(
case
when substr(TABLO.C.OZELKOD,1,2) = ’01’ then ‘A’
when substr(TABLO.C.OZELKOD,1,2) = ’02’ then ‘A’
when substr(TABLO.C.OZELKOD,1,2) = ’03’ then ‘A’
when substr(TABLO.C.OZELKOD,1,2) = ’05’ then ‘B’
when substr(TABLO.C.OZELKOD,1,2) = ’06’ then ‘B’
when substr(TABLO.C.OZELKOD,1,2) = ’07’ then ‘B’
when substr(TABLO.C.OZELKOD,1,2) = ’08’ then ‘B’
when substr(TABLO.C.OZELKOD,1,2) = ’09’ then ‘B’
when substr(TABLO.C.OZELKOD,1,2) = ’10’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’11’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’12’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’13’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’14’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’15’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’16’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’17’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’18’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’19’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’20’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’21’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’22’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’23’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’24’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’25’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’26’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’27’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’28’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’29’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’30’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’31’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’32’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’33’ then ‘C’
when substr(TABLO.C.OZELKOD,1,2) = ’35’ then ‘D’
when substr(TABLO.C.OZELKOD,1,2) = ’39’ then ‘E’
when substr(TABLO.C.OZELKOD,1,2) = ’36’ then ‘E’
when substr(TABLO.C.OZELKOD,1,2) = ’37’ then ‘E’
when substr(TABLO.C.OZELKOD,1,2) = ’38’ then ‘E’
when substr(TABLO.C.OZELKOD,1,2) = ’41’ then ‘F’
when substr(TABLO.C.OZELKOD,1,2) = ’42’ then ‘F’
when substr(TABLO.C.OZELKOD,1,2) = ’43’ then ‘F’
when substr(TABLO.C.OZELKOD,1,2) = ’45’ then ‘G’
when substr(TABLO.C.OZELKOD,1,2) = ’46’ then ‘G’
when substr(TABLO.C.OZELKOD,1,2) = ’47’ then ‘G’
when substr(TABLO.C.OZELKOD,1,2) = ’49’ then ‘H’
when substr(TABLO.C.OZELKOD,1,2) = ’50’ then ‘H’
when substr(TABLO.C.OZELKOD,1,2) = ’51’ then ‘H’
when substr(TABLO.C.OZELKOD,1,2) = ’52’ then ‘H’
when substr(TABLO.C.OZELKOD,1,2) = ’53’ then ‘H’
when substr(TABLO.C.OZELKOD,1,2) = ’56’ then ‘I’
when substr(TABLO.C.OZELKOD,1,2) = ’55’ then ‘I’
when substr(TABLO.C.OZELKOD,1,2) = ’60’ then ‘J’
when substr(TABLO.C.OZELKOD,1,2) = ’58’ then ‘J’
when substr(TABLO.C.OZELKOD,1,2) = ’59’ then ‘J’
when substr(TABLO.C.OZELKOD,1,2) = ’61’ then ‘J’
when substr(TABLO.C.OZELKOD,1,2) = ’62’ then ‘J’
when substr(TABLO.C.OZELKOD,1,2) = ’63’ then ‘J’
when substr(TABLO.C.OZELKOD,1,2) = ’64’ then ‘K’
when substr(TABLO.C.OZELKOD,1,2) = ’65’ then ‘K’
when substr(TABLO.C.OZELKOD,1,2) = ’66’ then ‘K’
when substr(TABLO.C.OZELKOD,1,2) = ’68’ then ‘L’
when substr(TABLO.C.OZELKOD,1,2) = ’70’ then ‘M’
when substr(TABLO.C.OZELKOD,1,2) = ’69’ then ‘M’
when substr(TABLO.C.OZELKOD,1,2) = ’71’ then ‘M’
when substr(TABLO.C.OZELKOD,1,2) = ’72’ then ‘M’
when substr(TABLO.C.OZELKOD,1,2) = ’73’ then ‘M’
when substr(TABLO.C.OZELKOD,1,2) = ’74’ then ‘M’
when substr(TABLO.C.OZELKOD,1,2) = ’75’ then ‘M’
when substr(TABLO.C.OZELKOD,1,2) = ’77’ then ‘M’
when substr(TABLO.C.OZELKOD,1,2) = ’78’ then ‘M’
when substr(TABLO.C.OZELKOD,1,2) = ’79’ then ‘M’
when substr(TABLO.C.OZELKOD,1,2) = ’80’ then ‘N’
when substr(TABLO.C.OZELKOD,1,2) = ’81’ then ‘N’
when substr(TABLO.C.OZELKOD,1,2) = ’82’ then ‘N’
when substr(TABLO.C.OZELKOD,1,2) = ’84’ then ‘O’
when substr(TABLO.C.OZELKOD,1,2) = ’85’ then ‘P’
when substr(TABLO.C.OZELKOD,1,2) = ’86’ then ‘Q’
when substr(TABLO.C.OZELKOD,1,2) = ’87’ then ‘Q’
when substr(TABLO.C.OZELKOD,1,2) = ’88’ then ‘Q’
when substr(TABLO.C.OZELKOD,1,2) = ’90’ then ‘R’
when substr(TABLO.C.OZELKOD,1,2) = ’91’ then ‘R’
when substr(TABLO.C.OZELKOD,1,2) = ’92’ then ‘R’
when substr(TABLO.C.OZELKOD,1,2) = ’93’ then ‘R’
when substr(TABLO.C.OZELKOD,1,2) = ’96’ then ‘S’
when substr(TABLO.C.OZELKOD,1,2) = ’95’ then ‘S’
when substr(TABLO.C.OZELKOD,1,2) = ’94’ then ‘S’
when substr(TABLO.C.OZELKOD,1,2) = ’97’ then ‘T’
when substr(TABLO.C.OZELKOD,1,2) = ’98’ then ‘T’
when substr(TABLO.C.OZELKOD,1,2) = ’99’ then ‘U’else ‘TANIMSIZ’
end
) harf,
substr(TABLO.C.OZELKOD,1,2) kod1,
substr(TABLO.C.OZELKOD,3,1) kod2,
substr(TABLO.C.OZELKOD,4,1) kod3,
substr(TABLO.C.OZELKOD,5,2) kod4FROM
TABLO.A,
TABLO.B,
TABLO.CORDER BY TABLO.C.OZELKOD
sorgu örneğinde de görüleceği üzere öncelikle TABLO.C.OZELKOD alanının 1. karakterinden 2 adet aldık ve bu değeri bir takım verilerle karşılaştırmak sureti ile sanal HARF kolonunu oluşturduk.
Örneğimizde;
eğer TABLO.C.OZELKOD alanının ilk iki karakteri 01 ise HARF kolonundaki veriyi A olarak belirtmesini istedik. Şayet örneklemlerimizde ilk 2 karakter belirtilen ifadelerden hiçbirine uymamış olursa o zaman da HARF kolonundaki veri TANIMSIZ ifadesini alacaktır.
ayrıca ;
substr(TABLO.C.OZELKOD,4,1) kod3,
şeklindeki satırlarımızda da TABLO.C.OZELKOD alanından 4. karakterinden 1 tane alarak KOD3 sanal alanını oluşturduğumuzu görebilirsiniz.