設置:
CREATE TABLE TABLE_NAME (KEY, VALUE) AS
SELECT '00', 'val1||||val5' FROM DUAL UNION ALL
SELECT '01', 'val2|val2|val3|' FROM DUAL UNION ALL
SELECT '02', 'val1|val2||val4' FROM DUAL;
查詢1:
SELECT Key,
REGEXP_SUBSTR(value, '([^|]*)(\||$)', 1, 1, NULL, 1) AS val1,
REGEXP_SUBSTR(value, '([^|]*)(\||$)', 1, 2, NULL, 1) AS val2,
REGEXP_SUBSTR(value, '([^|]*)(\||$)', 1, 3, NULL, 1) AS val3,
REGEXP_SUBSTR(value, '([^|]*)(\||$)', 1, 4, NULL, 1) AS val4,
REGEXP_SUBSTR(value, '([^|]*)(\||$)', 1, 5, NULL, 1) AS val5
FROM table_name
個
結果:
KEY VAL1 VAL2 VAL3 VAL4 VAL5
--- --------------- --------------- --------------- --------------- ---------------
00 val1 val5
01 val2 val2 val3
02 val1 val2 val4
來源
2015-12-15 16:42:42
MT0
什麼是你想要的輸出?一行五列?在0行和5行之間有兩列?還有別的嗎?我不確定你在嘗試什麼,可能是'regexp_substr'和什麼「失敗」。 –
我需要將分隔符上的值列拆分爲5列。 '根據標準,'dual'選擇regexp_substr('val1 | val2 ||| val5','[^ |] +',1,3)將產生'val5',因爲它是第三個值。我的目標是將這些數據轉移到一個有目的的表格中。 –
如果你將它編輯到你的問題中(這是你正在使用的代碼和你想要輸入數據的輸出),這將會很有幫助。 –