以下的文章是通過Oracle 字符串split的相關實際應用代碼描述來剖析Oracle 字符串split的實際應用,以下就是相關內容的詳細介紹。你如果是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的一種方法的描述,希望會給你帶來一些幫助在此方面。