2017-06-29 5 views
0

Ich habe eine Zeichenfolge 425874761-G # 463733361-S # 48310-S. Ich brauche ein SQL, um diese Zeichenfolge in eine Spalte wie folgt zu machen.String Parsing in Orakel

Column_1  Column_2 
425874761   G 
463733361   S 
48310    S 

Wenn der Eingang ist 48310-S # 425874761-G dann Ausgabe

Column_1  Column_2 
48310    S 
425874761   G 

Vielen Dank für die Hilfe im Voraus sein sollte!

Antwort

0

könnten Sie verwenden:

WITH temp AS (
    SELECT '425874761-G #463733361-S #48310-S' col1 FROM dual 
) 
SELECT 
    --REGEXP_SUBSTR(t.col1, '[^#]+', 1, levels.column_value) AS split_rows, 
    REGEXP_SUBSTR(REGEXP_SUBSTR(t.col1, '[^#]+', 1, levels.column_value), '[^-]+', 1, 1) AS col1, 
    REGEXP_SUBSTR(REGEXP_SUBSTR(t.col1, '[^#]+', 1, levels.column_value), '[^-]+', 1, 2) AS col2 
FROM 
    temp t, 
    TABLE(CAST(MULTISET(SELECT level FROM dual CONNECT BY level <= LENGTH (REGEXP_REPLACE(t.col1, '[^#]+')) + 1) AS sys.OdciNumberList)) levels; 

Diese Antwort verweisen Lösung von string_to_rows und string_to_columns