oracle中有类似split的方法么,ORACLE中字符串split的一种方法
一種方法是用函數:這里轉帖網上摘抄的一個函數
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
AS
v_length?? NUMBER := LENGTH(p_string);
v_start??? NUMBER := 1;
v_index??? NUMBER;
BEGIN
WHILE(v_start <= v_length)
LOOP
v_index := INSTR(p_string, p_delimiter, v_start);
IF v_index = 0
THEN
PIPE ROW(SUBSTR(p_string, v_start));
v_start := v_length + 1;
ELSE
PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));
v_start := v_index + 1;
END IF;
END LOOP;
RETURN;
END splitstr;
這里提供另外一種方法,利用oracle的正則相關函數實現:
select dbms_lob.substr(regexp_substr('abc,def,ggg,1,2,3,4,5', '[^,]+', 1, x.n)) as player_guid
from dual a, (select rownum n from dual connect by rownum < 100) x
這里利用了函數 regexp_substr和connect by
其中rownum < 100 會連接限制split的次數 '[^,]+'為split拆分的正則表達式,這里為【,】逗號
上面sql語句結果是:
abc
def
ggg
1
2
3
4
5
總結
以上是生活随笔為你收集整理的oracle中有类似split的方法么,ORACLE中字符串split的一种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python关键字是什么颜色,pytho
- 下一篇: mysql php 增删数据,php学习