2017-06-29 17 views
0

文字列があります425874761-G#463733361-S#48310-Sこの文字列を以下のような列にするにはSQLが必要です。oracleでの文字列解析

Column_1  Column_2 
425874761   G 
463733361   S 
48310    S 

入力が48310-S#1 425874761-Gであれば、出力は事前に助けを

Column_1  Column_2 
48310    S 
425874761   G 

感謝する必要があります!

答えて

0

あなたはこれを使用することができます:

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; 

この回答

string_to_rowsstring_to_columns

から解決策を参照してください。