oracle 按指定字符拆分字符串(split)


1.情景展示

在oracle當中,如何拆分以逗號隔開的字符串?(將字符串按指定字符拆分成多行數據)

比如:411600,411602,411603,411606,411609,411621,411622,411623,411624,411625,411626,411627,411628,411643,411681。

2.具體分析

oracle當中沒有專門的字符串拆分函數;

但是,我們可以通過REGEXP_SUBSTR()和CONNECT BY LEVEL來實現。

如果,需要自定義創建split函數的話,見文末推薦。

3.解決方案

語法:

SELECT REGEXP_SUBSTR(string,
                     '[^特定字符]+',
                     1,
                     LEVEL,
                     'i') as 分割后結果
  FROM DUAL
CONNECT BY LEVEL <= 特定字符在字符串當中出現的次數 + 1;

進一步優化

SELECT REGEXP_SUBSTR(string,
                     '[^特定字符]+',
                     1,
                     LEVEL,
                     'i') as 起個別名
  FROM DUAL
CONNECT BY LEVEL <= LENGTHB(TRANSLATE(string, '特定字符' || string, '特定字符')) + 1;

查看代碼

SELECT REGEXP_SUBSTR('411600,411602,411603,411606,411609,411621,411622,411623,411624,411625,411626,411627,411628,411643,411681',
                     '[^,]+',
                     1,
                     LEVEL,
                     'i') as 分割后結果
  FROM DUAL
CONNECT BY LEVEL <= LENGTHB(TRANSLATE('411600,411602,411603,411606,411609,411621,411622,411623,411624,411625,411626,411627,411628,411643,411681', ',' || '411600,411602,411603,411606,411609,411621,411622,411623,411624,411625,411626,411627,411628,411643,411681', ',')) + 1;
SELECT REGEXP_SUBSTR('411600,411602,411603,411606,411609,411621,411622,411623,411624,411625,411626,411627,411628,411643,411681',
                     '[^,]+',
                     1,
                     LEVEL,
                     'i') as 分割后結果
  FROM DUAL
CONNECT BY LEVEL <= LENGTHB(TRANSLATE('411600,411602,411603,411606,411609,411621,411622,411623,411624,411625,411626,411627,411628,411643,411681',
                                      ',' ||
                                      '411600,411602,411603,411606,411609,411621,411622,411623,411624,411625,411626,411627,411628,411643,411681',
                                      ',')) + 1;

 

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM