Oracle Substr Kullanımı | PL SQL Substr Fonksiyonu

Oracle Substr Kullanımı | PLSQL Substr Fonksiyonu

Oracle SUBSTR kullanımı ile String ifadelerin içerisinden String ifadeleri ayırabiliyoruz. Örneğin: “Merhaba PLSQL” stringimin içerisinden “SQL” substringini almak için, Oracle Substr Kullanımına bir göz atmamız gerekir.

Oracle Substr fonksiyonu kullanımı Syntaxı:

SUBSTR  ( string_ifade , başlangıç_pozisyonu [, uzunluk ] )

Görüldüğü gibi Oracle SUBSTR bizden 3 adet değer istiyor.

İlk parametre String ifadedir, yani içerisinde bulunan bir değeri almak istediğimiz bir dizi karakterdir. Örneğin “Merhaba123Dünya”.

Bu karakterlerin içerisinden, baslangıc_pozisyonu ve uzunluk olarak verdiğimiz değere göre SUBSTR() bize sonuç gönderecektir.

“başlangıc_pozisyonu” ile edinmek istediğimiz string ifadenin nereden başlayacağını belirtiyoruz. Seçimlik olan “uzunluk” değişkeni ile de kaç karakter almak istediğimizi belirtiyoruz.

Örneğin:

SUBSTR  ( 'Merhaba123Dünya', 2,5 ) -- Sonuç : erhab

 

Biz burada SUBSTR() fonksiyonu ve INSTR fonksiyonu kullanımını inceleyeceğiz.

Bu sayede bir bütün olarak string ifadelerden stringleri veya içeriğindeki sayıları ayırma konularında yeteneğimizi geliştireceğiz.

Ön hazırlık niyeti ile  ‘123’ sayısını ‘Merhaba123’ stringinden almaya çalışalım.

Örneğin:

select substr ('Merhaba123' ,instr('Merhaba123', 'Merhaba' ,1)+length('Merhaba')) from dual

 

Yukarıdaki kodu SQL Developer veya PLSQL  Developer programlarınıza kopyalayın ve inceleyin. Burada ‘Merhaba123’ karakterlerinin içerisinden ‘123’ ü ayırdık. Sonucu ‘123’ olarak gelir. Sebebi ise;

instr(‘Merhaba123′,’Merhaba’,1)  = 1

instr(‘Merhaba123′,’Merhaba’,1)  + length(‘Merhaba’) = 1 + 7 = 8  ifadesi ile substr içerisinde 2. değer olan pozisyonu belirttik. uzunluk olarak 3. değerimizi vermedik yani kaç karakter var ise hepsini al demek istedik. Bunun yerine uzunluk değerini 3 de yazsaydık ‘123’ değerini alabilirdik. Ancak tabiki fonksiyonel olmazdı.

Çok farklı durumlarda çok farklı senaryolar ile karşılaşabiliriz. Yazımın devamındaki birkaç örnek, bize substr fonksiyonunun anlam ve önemini anlatacak. Ama biz şimdi sql substr fonksiyonunu ayrıntılarına kadar inceleyelim.

Oracle Substr Özellikleri

Eğer uzunluk girmeden “örn : substr(“helloworld”,2) ” çalıştırırsanız çıktı string ifadenin başlangıç_pozisyonundan itibaren tamamı olacaktır. Yani “elloworld”.

Stringin başlangıç pozisyonu 1’dir 0 yazsanız bile 1 olacaktır.

Yani 1. harften itibaren string i kesmeye başlayacaktır. Ancak negatif bir değer verirseniz stringin sonundan saymaya başlayacaktır.

 

Oracle Substr Örnekleri

SUBSTR('merhaba güzel dünya, naber?', 6, 2)Sonuç: 'ba'
SUBSTR('merhaba güzel dünya, naber?', 6)Sonuç: 'ba güzel dünya, naber?'
SUBSTR('merhaba güzel dünya, naber?', 1, 4)Sonuç: 'merh'
SUBSTR('merhaba güzel dünya, naber?', -3, 3)Sonuç: 'ber'
SUBSTR('merhaba güzel dünya, naber?', -6, 3)Sonuç: 'nab'
SUBSTR('merhaba güzel dünya,naber?', -8, 2)Sonuç: 'a,'
SUBSTR('DENEMEYEDEGER'),4,-1)
SUBSTR('DENEMEYEDEGER', 4, -2382) --eğer uzunluk negatif ise sonuç her zaman NULL döner. 
Sonuç: NULL

 

Oracle INSTR Kullanımı

Bir stringin içindeki string ifadenin pozisyonunu bize numerik olarak verir. Numerik değer döner. Yani bir string ifadedeki aradığımız bir harfin veya kelimenin lokasyonunu bize numerik olarak döndürür.

Syntax ı;

INSTR( string_ifade  , aranan_string_ifade [, baslangic_pozisyonu [, kaçıncı_karsilasma ] ] )

Örnekler:

INSTR('selam kardeşim', 'e') Sonuç: 2 ('e' ile ilk karşılaşma)
 INSTR('selam kardeşim', 'e', 1, 1) Sonuç: 2 ('e' ile ilk karşılaşma)
 INSTR('selam kardeşim', 'e', 1, 2) Sonuç: 11 ('e' ile ikinci karşılaşma)
 INSTR('selam kardeşime', 'e', 1, 3) Sonuç: 15 ('e' ile üçüncü karşılaşma)
 INSTR('Teknoloji gelişiyor nAt', 'e', -3, 2)  Sonuç: 2 -- başlangıç pozisyonu eğer negatifse tersen okumaya başlar ve tersten 3. harften sonra 2. defa karşılaştığı indexi sonuç olarak döner.

Oracle Substr ve Oracle Instr Fonksiyonları Birlikte Kullanımı

Substr sonuç olarak bize  string bir ifade dönüyordu. Bu string ifadeyi döndürmek için rakamlar ile başlangıç pozisyonu, uzunluk gibi değerleri vermemiz gerekiyordu.

Bu sebeple Substr fonksiyonu içerisinde Oracle instr fonksiyonunun bize döndürdüğü pozisyonları kullanabiliriz. Bu sayede zor string ifadelerin içindeki değerleri belli kriterlere göre ayırabilme imkanına sahip oluyoruz. Aşağıdaki örnek içerisinde  'FATURA_NO12321SIRANO166312' gibi bir ifadenin içerisinden “fatura_no” değeri olan 12321, “sırano” değeri olan “166312” değerini ayırmamız gerekiyor ise bunu, SUBSTR ve INSTR fonksiyonlarını iç içe kullanarak rahatlıkla ayırabileceğimizi görelim;

Örnek:

select SUBSTR('FATURA_NO12321SIRANO166312',INSTR ('FATURA_NO12321SIRANO166312' , 'FATURA_NO', 1, 1)+length('FATURA_NO'), INSTR ('FATURA_NO12321SIRANO166312SATIRNO434' , 'SIRANO' , 1, 1)-10) fatura_no,
SUBSTR('FATURA_NO12321SIRANO166312',INSTR ('FATURA_NO12321SIRANO166312' , 'SIRANO', 1, 1)+length('SIRANO'),999) sira_no,
'FATURA_NO12321SIRANO166312' STRING_IFADE
FROM DUAL

Sonuçu kendi PLSQL programınızda çalıştırdığınızda çıktı aşağıdaki gibi gözükecektir.


FATURA_NO                       SIRA_NO                                    STRING_IFADE

12321                                  166312                        FATURA_NO12321SIRANO166312


Oracle Substr fonksiyonu kullanımı konulu yazımızın sonuna geldik.  Daha faydalı yazılarda görüşmek dileğiyle 🙂

Daha fazla bilgi için Oracle Docs

diğer Oracle Makalelerim için…

 

Oracle Substr Kullanımı PLSQL Substr
Oracle Substr Kullanımı PLSQL Substr