Regular Expression ile Sayı Kontrolü

Regular Expression ile Sayı Kontrolü

Geçen gün bir yazılımcı arkadaşımın böyle bir ihtiyacı oldu, concat edilerek üretilmiş bir referans alandaki metin değerlerini elde etmemiz gerekiyordu. Stringdeki numerik değerleri temizlemek istiyoruz, bunun için plsql regular expression ve plsql replace fonksiyonu kullanacağız.

Regular expression ile numerik alanların kontrolü:

SELECT (REGEXP_REPLACE('abcd12345ew rwer', '[0-9]')) FROM DUAL;
abcdew rwer
 
SELECT (REGEXP_REPLACE(kolon_adi, '[0-9]')) FROM tablo;

REPLACE fonksiyonu ile numerik alanların kontrolü:

Aynı işlemi plsql replace fonksiyonu ile de yapabilirdik,ama biraz daha uzunca ve zahmetli.
Bu sebeple regular expression kullanmak daha mantıklı ve regular expression daha esnek bir yapıya sahip.

SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
('abcd12345ew rwer',0,NULL),1,NULL),2,NULL),3,NULL),4,NULL),5,NULL),6,NULL),7,NULL),8,NULL),9,NULL) FROM DUAL;
 
abcdew rwer

 

Umarım faydalı olur.

Tagged: , , , , , ,

1 comment

  1. Celal Özdemir 13 Temmuz 2016 at 14:12 Reply

    Replace yerine Translate fonksiyonunu kullanmak daha güzel olabilir.

    SELECT translate(‘abcd12345ew rwer’, ‘A0123456789′ ,’A’) FROM DUAL;
    abcdew rwer

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir