oracle一个表拆成多个表,oracle – 在oracle表中将多个以逗号分隔的值拆分为多行...
接受的答案使用條件DBMS_RANDOM.VALUE IS NOT NULL這是不合適的。 它只是防止循環(huán),但是一個(gè)簡(jiǎn)單的問(wèn)題會(huì)出現(xiàn), 如何和何時(shí)dbms_random.VALUE可以為空? 從邏輯上講,它永遠(yuǎn)不會(huì)是NULL 。
更合適的解決scheme是使用sys.odciNumberList并防止循環(huán)循環(huán)。
例如,
build立
SQL> CREATE TABLE t ( 2 ID NUMBER GENERATED ALWAYS AS IDENTITY, 3 text VARCHAR2(100) 4 ); Table created. SQL> SQL> INSERT INTO t (text) VALUES ('word1, word2, word3'); 1 row created. SQL> INSERT INTO t (text) VALUES ('word4, word5, word6'); 1 row created. SQL> INSERT INTO t (text) VALUES ('word7, word8, word9'); 1 row created. SQL> COMMIT; Commit complete. SQL> SQL> SELECT * FROM t; ID TEXT ---------- ---------------------------------------------- 1 word1, word2, word3 2 word4, word5, word6 3 word7, word8, word9 SQL>
所需查詢:
SQL> SELECT t.id, 2 trim(regexp_substr(t.text, '[^,]+', 1, lines.column_value)) text 3 FROM t, 4 TABLE (CAST (MULTISET 5 (SELECT LEVEL FROM dual CONNECT BY LEVEL <= regexp_count(t.text, ',')+1) 6 AS sys.odciNumberList 7 ) 8 ) lines 9 ORDER BY id 10 / ID TEXT ---------- -------------------------------------------------- 1 word1 1 word2 1 word3 2 word4 2 word5 2 word6 3 word7 3 word8 3 word9 9 rows selected.
使用XMLTABLE的備用解決scheme:
SQL> SELECT id, 2 trim(COLUMN_VALUE) text 3 FROM t, 4 xmltable(('"' 5 || REPLACE(text, ',', '","') 6 || '"')) 7 / ID TEXT ---------- ------------------------ 1 word1 1 word2 1 word3 2 word4 2 word5 2 word6 3 word7 3 word8 3 word9 9 rows selected. SQL>
有很多方法可以完成這個(gè)任務(wù),比如MODEL子句。 有關(guān)更多示例,請(qǐng)參閱將逗號(hào)分隔的string拆分為表格
總結(jié)
以上是生活随笔為你收集整理的oracle一个表拆成多个表,oracle – 在oracle表中将多个以逗号分隔的值拆分为多行...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 分享几个可供学习,休闲的网站
- 下一篇: 腾讯管家中的壁纸无下载按钮,如何保存?