Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak podzielić ciąg w PL/SQL?

W tym artykule podam przykład funkcji, której najczęściej używam do dzielenia ciągu w PL/SQL. Zwłaszcza, gdy piszę program do importowania rozdzielanego pliku. Oto ta funkcja i przykład, jak z niej korzystać.

Funkcja PL/SQL do dzielenia ciągu

Ta funkcja przyjmuje cztery parametry, a szczegóły tych parametrów są jak poniżej:

  1. Source_String :Ciąg do podziału
  2. Field_Position :Pozycja ogranicznika
  3. Niezakończone :Fałsz domyślnie, ale jeśli podasz True, to doda określony ogranicznik na końcu ciągu.
  4. Ogranicznik :Domyślnie jest to przecinek ',', możesz podać dowolny inny ogranicznik.
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;

Przykład:Użyj tej funkcji w programie 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;
/

Wyjście:

Java
.Net
C
Oracle
PHP
PL/SQL procedure successfully completed.

Zobacz też:

  • Eksportuj dane do JSON za pomocą PL/SQL w Oracle 11g
  • Program PL/SQL do drukowania danych pracowników
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. różnica między klauzulą ​​ON a klauzulą ​​using w sql

  2. Programista SQL 4.1.2

  3. TO_DATE() Funkcja w Oracle

  4. CRS 11.2.0

  5. 27 skryptów Oracle dba dla bazy danych Oracle dla administracji i monitorowania