Heim > php教程 > PHP开发 > Detaillierte Erläuterung der Beispiele für benutzerdefinierte Oracle-Split-Funktionen

Detaillierte Erläuterung der Beispiele für benutzerdefinierte Oracle-Split-Funktionen

高洛峰
Freigeben: 2017-01-06 13:03:43
Original
1649 Leute haben es durchsucht

Benutzerdefinierte Teilungsfunktion von Oracle

Oracle bietet keine Teilungsfunktion, Sie können jedoch selbst eine Funktion erstellen, um diese Funktion zu implementieren. Beispiel: „abc defg hijkl nmopqr stuvw xyz“, das Trennzeichen ist ein Leerzeichen, aber die Anzahl der Leerzeichen ist variabel.

Quellcode:

CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);
 
CREATE OR REPLACE FUNCTION fn_var_split (
  p_str IN VARCHAR2,
  p_delimiter IN VARCHAR2
)
  RETURN ty_str_split
IS
  j INT := 0;
  len INT := 0;
  str VARCHAR2 (4000);
  str_split ty_str_split := ty_str_split ();
  v_str VARCHAR2 (4000) := RTRIM (LTRIM (p_str, p_delimiter), p_delimiter);
BEGIN
  len := LENGTH (v_str);
 
  WHILE len > 0
  LOOP
    j := INSTR (v_str, p_delimiter, 1);
 
    IF j = 0
    THEN
      str := SUBSTR (v_str, 1);
      len := 0;
      str_split.EXTEND;
      str_split (str_split.COUNT) := str;
    ELSE
      str := SUBSTR (v_str, 1, j - 1);
      v_str := LTRIM (LTRIM (v_str, str), p_delimiter);
      len := LENGTH (v_str);
      str_split.EXTEND;
      str_split (str_split.COUNT) := str;
    END IF;
  END LOOP;
 
  RETURN str_split;
END fn_var_split;
/
Nach dem Login kopieren

Test:
Ergebnis:

1
12
123
1234
12345
Nach dem Login kopieren
DECLARE
  CURSOR c
  IS
    SELECT * FROM TABLE (CAST (fn_var_split (';1;12;;123;;;1234;;;;12345;', ';') AS ty_str_split));
  r c%ROWTYPE;
BEGIN
  OPEN c;
  LOOP
    FETCH c INTO r;
    EXIT WHEN c%NOTFOUND;
    DBMS_OUTPUT.put_line (r.column_value);
  END LOOP;
  CLOSE c;
END;
/
Nach dem Login kopieren

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke Vielen Dank für Ihre Bewertung. Site-Support!

Weitere Beispiele für benutzerdefinierte Oracle-Split-Funktionen und verwandte Artikel finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage