katakanlah kita buat satu function, bernama cek_numeric, ini nih codenya di oracle
CREATE FUNCTION CEK_NUMERIC(P_DATA IN VARCHAR2) RETURN VARCHAR2
IS
V_TIPE VARCHAR(11);
BEGIN
SELECT CASE WHEN REGEXP_LIKE(TRIM(P_DATA), '^-?[[:digit:],.]*$')
THEN 'NUMERIC'
ELSE 'NON-NUMERIC' END INTO V_TIPE
FROM DUAL;
IF V_TIPE = 'NUMERIC' THEN
RETURN 'TRUE';
ELSE
RETURN 'FALSE';
END IF;
END CEK_NUMERIC;
bagi Anda yang masih awam, saya terangkan deh, mumpung masih senang ngetik nih
CREATE FUNCTION CEK_NUMERIC(P_DATA IN VARCHAR2) RETURN VARCHAR2
artinya adalah, kita akan membuat function dengan nama cek_numeric dengan data inputan bernama p_data bertipe varchar2, dan mengembalikan nilai / return bertipe varchar2 saat dieksekusi.IS V_TIPE VARCHAR(11);
adalah pendeklarasian variable dalam oracle, jika Anda memiliki lebih dari 1 variable, masukkan di sini semuanya ya.begin dan end adalah awal dan akhir eksekusi kita.
SELECT CASE WHEN REGEXP_LIKE(TRIM(P_DATA)... dst
adalah mengecek p_data yang diinputkan, serta titik atau koma jika diketahui, akan menghasilkan 'NUMERIC', jika lainnya hasilkan 'NON-NUMERIC' dan simpan (INTO) ke variable V_TIPE.IF V_TIPE = 'NUMERIC' THEN RETURN 'TRUE';... dst
jika v_tipe bernilai NUMERIC, maka kembalikan nilai TRUE. dst, jika ada pertanyaan masalah ini silakan kirim di comment saja ya..Nah, selanjutnya adalah mengubah nilai yang bukan character kita hapus dan mengambil nilai number saja.
CREATE FUNCTION GANTI_NUMERIC(P_DATA IN VARCHAR2) RETURN NUMBER
IS
V_HASIL NUMBER;
BEGIN
IF CEK_NUMERIC(P_DATA) = 'TRUE' THEN
V_HASIL := REPLACE(P_DATA, '.', ',');
ELSE
SELECT REPLACE (TRANSLATE (P_DATA, TRANSLATE (P_DATA, '1234567890', ' '),'*'),'*')
INTO V_HASIL FROM DUAL;
END IF;
RETURN V_HASIL;
END GANTI_NUMERIC;
nah, saya hanya akan menerangkan yang berwarna biru saja ya.
IF CEK_NUMERIC(P_DATA) = 'TRUE' THEN V_HASIL := REPLACE(P_DATA, '.', ',');
jika kita mengeksekusi function cek_numeric yang kita telah buat di atas bernilai 'TRUE' maka tidak perlu diproses, tapi simpan data di v_hasil yang nanti akan kita kembalikan karena khan data sudah dalam bentuk numeric.SELECT REPLACE (TRANSLATE (P_DATA, TRANSLATE (P_DATA, '1234567890', ' '),'*'),'*')
INTO V_HASIL FROM DUAL;
Nah, jika cek_numeric bernilai 'FALSE' maka kita ubah selain 12345...0 menjadi '' atau tanpa character. dan simpan hasilnya dalam v_hasil dan kita kembalikan.Nah, akhirnya selesai juga. Terima kasih
Sumber : http://datawarehouse.ittoolbox.com/groups/technical-functional/informatica-l/how-can-we-remove-all-types-of-non-numeric-and-special-charecters-from-a-character-field-which-is-having-numaric-data-3473701
0 comments
Post a Comment