PLSQL Metindeki Rakamları Bulmak
Bu makalede bir stringdeki numerik değerleri bulup geri döndüren fonksiyon yazacağız.Fonksiyonda aradığımız karakterleri 0123456789 şeklinde belirttim, bunların dışında kalan karakterleri metinden çıkarıp bize sadece numerik kısmı döndürecek.
Fonksiyonumuzu aşağıdaki gibi oluşturalım.
CREATE OR REPLACE FUNCTION find_a_numbers(string_ IN VARCHAR2) RETURN NUMBER IS return_ VARCHAR2(4000); validchars_ VARCHAR2(10):= '0123456789'; found_ BOOLEAN; len_ NUMBER:=length(string_); i_ NUMBER; v NUMBER; BEGIN IF nvl(len_,0)>0 THEN FOR i_ IN 1..len_ LOOP found_ := FALSE; FOR v IN 1..length(validchars_) LOOP IF substr(string_,i_,1)=substr(validchars_,v,1) THEN found_ := TRUE; EXIT; END IF; END LOOP; IF found_ THEN return_ := return_ ||substr(string_,i_,1); END IF; END LOOP; END IF; RETURN to_number(nvl(return_,'0')); END find_a_numbers; |
Şimdi fonksiyonumuzla denemeler yapalım..
SELECT find_a_numbers('9876OMER123232465') FROM dual; 9876123232465 SELECT find_a_numbers('ORAcle12345+67') FROM dual; 1234567 SELECT find_a_numbers('34464565') FROM dual; 34464565 SELECT find_a_numbers('xyz+dfgfd') FROM dual; 0 |
validchars_ tanımında yazdığımız rakamlar yerine başka karakterler de kullanarak kendinize göre uyarlayabilirsiniz.
Umarım faydalı olur.
Tagged: plsql compare characters, plsql metindeki rakamları bulmak, plsql number function, plsql sayıları bulmak, plsql search character, plsql split number chars, plsql string functions, plsql text search
Bir cevap yazın