Pada artikel ini, saya memberikan contoh fungsi yang paling sering saya gunakan untuk membagi string di PL/SQL. Terutama, ketika saya menulis program untuk mengimpor file yang dibatasi. Berikut adalah fungsi tersebut dan contoh cara menggunakannya.
Fungsi PL/SQL untuk Memisahkan String
Fungsi ini mengambil empat parameter, dan rincian parameter ini adalah sebagai berikut:
- Source_String :String untuk Dipisah
- Posisi_Bidang :Posisi Pembatas
- Tidak Dihentikan :False secara default, tetapi jika Anda meneruskan True, maka itu akan menambahkan pembatas yang ditentukan di akhir string.
- Pembatas :Defaultnya adalah Koma ',', Anda dapat melewati pembatas lainnya.
CREATE OR REPLACE FUNCTION GetString ( Source_string IN VARCHAR2, Field_position IN NUMBER, UnTerminated IN BOOLEAN DEFAULT FALSE, Delimiter IN VARCHAR2 DEFAULT ',') RETURN VARCHAR2 IS iPtrEnd PLS_INTEGER := 0; iPtrStart PLS_INTEGER := 0; vcSourceStrCopy VARCHAR2 (4000) := Source_string; BEGIN IF UnTerminated THEN vcSourceStrCopy := vcSourceStrCopy || Delimiter; END IF; IF Field_Position > 1 THEN iPtrStart := INSTR (vcSourceStrCopy, Delimiter, 1, Field_Position - 1) + LENGTH (Delimiter); ELSE iPtrStart := 1; END IF; iPtrEnd := INSTR (vcSourceStrCopy, Delimiter, 1, Field_Position); RETURN SUBSTR (vcSourceStrCopy, iPtrStart, (iPtrEnd - iPtrStart)); END GetString;
Contoh:Gunakan Fungsi Ini di Program PL/SQL
SET SERVEROUTPUT ON;
DECLARE
v_string VARCHAR2 (1000) := 'Java|.Net|C|Oracle|PHP';
TYPE t_string IS TABLE OF VARCHAR2 (1000)
INDEX BY BINARY_INTEGER;
t_str_array t_string;
BEGIN
FOR i IN 1 .. 5
LOOP
t_str_array (i) :=
getstring (v_string,
i,
TRUE,
'|');
END LOOP;
FOR j IN t_str_array.FIRST .. t_str_array.LAST
LOOP
DBMS_OUTPUT.put_Line (t_str_array (j));
END LOOP;
END;
/ Keluaran:
Java .Net C Oracle PHP PL/SQL procedure successfully completed.
Lihat juga:
- Ekspor Data ke JSON menggunakan PL/SQL di Oracle 11g
- Program PL/SQL untuk Mencetak detail Karyawan