Oracle 自定義split 函數(shù)實(shí)例詳解
Oracle 自定義split 函數(shù)
Oracle沒(méi)有提供split函數(shù),但可以自己建立一個(gè)函數(shù)實(shí)現(xiàn)此功能。比如“abc defg hijkl nmopqr stuvw xyz”,分隔符是空格,但空格個(gè)數(shù)不定。
源代碼:
CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000); CREATE OR REPLACE FUNCTION fn_var_split ( p_str IN VARCHAR2, p_delimiter IN VARCHAR2 ) RETURN ty_str_split IS j INT := 0; len INT := 0; str VARCHAR2 (4000); str_split ty_str_split := ty_str_split (); v_str VARCHAR2 (4000) := RTRIM (LTRIM (p_str, p_delimiter), p_delimiter); BEGIN len := LENGTH (v_str); WHILE len > 0 LOOP j := INSTR (v_str, p_delimiter, 1); IF j = 0 THEN str := SUBSTR (v_str, 1); len := 0; str_split.EXTEND; str_split (str_split.COUNT) := str; ELSE str := SUBSTR (v_str, 1, j - 1); v_str := LTRIM (LTRIM (v_str, str), p_delimiter); len := LENGTH (v_str); str_split.EXTEND; str_split (str_split.COUNT) := str; END IF; END LOOP; RETURN str_split; END fn_var_split; /
測(cè)試:
結(jié)果:
1 12 123 1234 12345
DECLARE CURSOR c IS SELECT * FROM TABLE (CAST (fn_var_split (';1;12;;123;;;1234;;;;12345;', ';') AS ty_str_split)); r c%ROWTYPE; BEGIN OPEN c; LOOP FETCH c INTO r; EXIT WHEN c%NOTFOUND; DBMS_OUTPUT.put_line (r.column_value); END LOOP; CLOSE c; END; /
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
oracle數(shù)據(jù)庫(kù)超全的多表查詢連接
這篇文章主要給大家介紹了關(guān)于oracle數(shù)據(jù)庫(kù)超全的多表查詢連接的相關(guān)資料,多表連接查詢實(shí)際上是通過(guò)各個(gè)表之間公共字段的關(guān)鍵性來(lái)查詢數(shù)據(jù)的,它是關(guān)系數(shù)據(jù)庫(kù)查詢的最主要的特征,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12Oracle 11g2的監(jiān)聽(tīng)器配置教程
Oracle的監(jiān)聽(tīng)器服務(wù)注冊(cè)方式有兩種,分別為動(dòng)態(tài)和靜態(tài),本文將詳細(xì)介紹這兩種,需要的朋友可以參考下2012-11-11Oracle數(shù)據(jù)庫(kù)中的觸發(fā)器詳解
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)中觸發(fā)器的相關(guān)資料,觸發(fā)器也是保護(hù)數(shù)據(jù)完整性的一種重要方法,于存儲(chǔ)過(guò)程不同的是,觸發(fā)器是通過(guò)事件進(jìn)行觸發(fā)被執(zhí)行,存儲(chǔ)過(guò)程需要被調(diào)用執(zhí)行,需要的朋友可以參考下2024-02-02oracle誤drop/update操作后的數(shù)據(jù)恢復(fù)測(cè)試
本人主要是對(duì)drop/update數(shù)據(jù)后,在允許有時(shí)間內(nèi)進(jìn)行數(shù)據(jù)恢復(fù),操作性強(qiáng),比較實(shí)用。不對(duì)理論進(jìn)行講訴,需要的朋友可以參考下2015-08-08win10 oracle11g安裝報(bào)錯(cuò)問(wèn)題集合 附解決方法
這篇文章主要為大家總結(jié)了win10 oracle11g安裝報(bào)錯(cuò)問(wèn)題的產(chǎn)生原因,和oracle安裝報(bào)錯(cuò)的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05整理Oracle數(shù)據(jù)庫(kù)中數(shù)據(jù)查詢優(yōu)化的一些關(guān)鍵點(diǎn)
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)中數(shù)據(jù)查詢優(yōu)化的一些關(guān)鍵點(diǎn)的整理,包括多表和大表查詢等情況的四個(gè)方面的講解,需要的朋友可以參考下2016-01-01Oracle試用到期如何刪除注冊(cè)表繼續(xù)試用30天
這篇文章主要介紹了Oracle試用到期如何刪除注冊(cè)表繼續(xù)試用30天,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04