あなたはこれを使用することができます:
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_rowsと
string_to_columns
から解決策を参照してください。