在Oracle中,可以使用CONNECT BY LEVEL語句和REGEXP_SUBSTR函數來實現根據逗號將一行數據拆分成多行數據。以下是一個示例:
假設有一個包含逗號分隔的字符串的表,例如:
CREATE TABLE test_table (
id NUMBER,
data VARCHAR2(100)
);
INSERT INTO test_table VALUES (1, 'A,B,C');
現在,我們想要將data字段中的逗號分隔的數據拆分成多行數據,可以使用如下SQL語句:
SELECT id,
REGEXP_SUBSTR(data, '[^,]+', 1, LEVEL) AS split_data
FROM test_table
CONNECT BY REGEXP_SUBSTR(data, '[^,]+', 1, LEVEL) IS NOT NULL
AND PRIOR id = id
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL;
運行以上SQL語句后,將會得到如下結果:
ID | SPLIT_DATA
----|----------
1 | A
1 | B
1 | C
通過以上SQL語句,我們成功將逗號分隔的數據拆分成了多行數據。