sql >> Database teknologi >  >> RDS >> Oracle

Hvordan opdeles en streng i PL/SQL?

I denne artikel giver jeg et eksempel på en funktion, som jeg mest bruger til at opdele en streng i PL/SQL. Især når jeg skriver et program til at importere en afgrænset fil. Her er den funktion og et eksempel på, hvordan den bruges.

PL/SQL-funktion til at opdele en streng

Denne funktion tager fire parametre, og detaljerne for disse parametre er som under:

  1. Kildestreng :Streng til opdeling
  2. Felt_Position :Afgrænsningsposition
  3. Uopsagt :Falsk som standard, men hvis du passerer True, tilføjer den det angivne skilletegn i slutningen af ​​strengen.
  4. Afgrænsning :Standard er komma ',', du kan bruge enhver anden afgrænsning.
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;

Eksempel:Brug denne funktion i PL/SQL-programmet

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;
/

Output:

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

Se også:

  • Eksporter data til JSON ved hjælp af PL/SQL i Oracle 11g
  • PL/SQL-program til at udskrive medarbejderoplysninger
  1. SQL Server Cursor Types - KEYSET Cursor | SQL Server Tutorial / TSQL Tutorial

  2. Parameter Sniffing (eller Spoofing) i SQL Server

  3. Hvordan opretter jeg en fremmednøgle i SQL Server?

  4. få id'er for flere rækker indsat i psycopg2