Oracle拆分字符串函数与执行调用
生活随笔
收集整理的這篇文章主要介紹了
Oracle拆分字符串函数与执行调用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
本函數可以將“目標字符串”以“指定字符串”進行拆分,并通過表結構返回結果。代碼如下:
CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000); CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)RETURN str_split PIPELINED ASv_length NUMBER := LENGTH(p_string);v_start NUMBER := 1;v_index NUMBER; BEGINWHILE(v_start <= v_length)LOOPv_index := INSTR(p_string, p_delimiter, v_start);IF v_index = 0THENPIPE ROW(SUBSTR(p_string, v_start));v_start := v_length + 1;ELSEPIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));v_start := v_index + 1;END IF;END LOOP;RETURN; END splitstr;?
創建完畢后,我們來測試一下,例如執行如下SQL:
select * from table(splitstr('Hello,Cnblogs!',','));?
其輸出結果為一個兩行的表,如下圖:
?
將行轉為列顯示:
select a.column_value v1,b.column_value v2 from (select * from (select rownum rn,t.* from table(splitstr('Hello,Cnblogs!',',')) t)) a, (select * from (select rownum rn,t.* from table(splitstr('Hello,Cnblogs!',',')) t)) b where a.rn=1 and b.rn=2?
如圖:
?
實際SQL應用:
select FID from Ct_Ht_Maincontract where FID in (select a.column_value fid from (select * from (select * from table(splitstr('++4uu0vtQFyNPvT+pYq5kiOVzh4=,++dn+T66RsuI85VIAGfkcyOVzh4=',',')) t)) a )?
轉載于:https://www.cnblogs.com/sunhaoyu/p/8398093.html
總結
以上是生活随笔為你收集整理的Oracle拆分字符串函数与执行调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: struts升级2.3.12到2.5.1
- 下一篇: 数论练习(1)——取余运算(快速幂)