Bu aralar regex ile devam ediyorum. bugun oracleda ihtiyacım oldu düzenli ifadelere kullanırken aklıma geldi bloguma da eklim dedim.
Oracle Regex Fonksiyonları :
| Fonksiyon | Açıklama |
| REGEXP_LIKE | LIKE gibi çalışır ama katar tanımlamanıza olanak sağlar. |
| REGEXP_INSTR | Katara uyan ilk eşleşmenin ilk karakterinin indisi olarak döner. |
| REGEXP_REPLACE | Klasik Regexp replace işi yapar. |
| REGEXP_SUBSTR | Katara eşleşen metin olarak döner. |
REGEXP_LIKE :
0 | SELECT *FROM HASTALAR WHERE REGEXP_LIKE(HASTA_ADI,'([A-Z]+)','c'); |
ilk parametremiz arama yapacağımız alan ya da metnin kendisi, ikincisi katar görüntüsü üçüncü parametremiz de regex ayarları oluyor.
Bu sorgunun sonucunda bize sadece büyük harflerden oluşmuş isimler gelir.
Regex Ayarları:
| Fonksiyon | Açıklama |
| c | Büyük küçük harf duyarlı eşleşme (varsayılan) |
| i | Büyük küçük harfe duyarsız eşleşme |
| n | “match-any-character” ayarını açar. (sadece acıkken nokta satır sonu ile de eşleşir) |
| m | multiline ayarı (: |
0 | SELECT REGEXP_INSTR('TUFAN BARIS YILDIRIM 123','([0-9]+)') FROM DUAL |
sorgu sonucunda katara ilk eşleşen kısım “123″ olacağından ilk karakterinin yani ” 1″ in indisi yani 25 sonucunu alırız
0 | SELECT REGEXP_SUBSTR('TUFAN BARIS YILDIRIM 123','([0-9]+)') FROM DUAL |
sorgu sonucunda katara ilk eşleşen kısım “123″ olacağından bize 123 olarak döner. ilk eşleşmeden sonrakileri almak istiyorsak regexp_replace kullanrız.
0 | SELECT REGEXP_REPLACE('TUFAN BARIS YILDIRIM 123','([A-Z]+)([\s]+)([0-9]+)','rakamlardan onceki son kelime : \1') FROM DUAL |
sorguda ilk önce katarı inceleyelim 3 gruptan oluşuyor ilk grubumuz büyük harf(ler) ikincisi boşluk(lar) üçüncü grubumuz rakam(lar) replace işleminde kullandığımız \1 eşleşen grubun indisin belirtir bulduğumuz sonucu ilk grup ile değiştirip cıktı olark alıyoruz. eşleşen grup “YILDIRIM 123″ olur replace işleminde ilk grubu yerine yazarsak bize
“rakamlardan önceki son kelime : YILDIRIM” diye döner.
bi dahaki regex ya da oracle yazımızda görüşürz inş iyi çalışmalar..
Henüz yorum yapılmamış.
Bu yazıya yapılan yorumlar için RSS beslemeleri. TrackBack URL