PLSQL Metindeki Rakamları Bulmak

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: , , , , , , ,

Bir cevap yazın

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