作 者按,字符串分解在ORACLE編程中可用于詞、字的解析,繼而可實現(xiàn)單詞搜索的合并,為基礎(chǔ)代碼。 代碼如下,作者保留所有權(quán)。 create or replace function FUN_STRING_SPLIT ( v_string IN VARCHAR2, v_sep IN VARCHAR2) return fs.stringList IS/*********
作者按,字符串分解在ORACLE編程中可用于詞、字的解析,繼而可實現(xiàn)單詞搜索的合并,為基礎(chǔ)代碼。
代碼如下,作者保留所有權(quán)。
create or replace function FUN_STRING_SPLIT ( v_string IN VARCHAR2, v_sep IN VARCHAR2) return fs.stringList IS /***************************************************************************/ /* */ /* 字符串分割函數(shù) for ORACLE */ /* @param v_string 母字符串 */ /* @param v_sep 分隔符 */ /* @return 字符串列表 */ /* TYPE stringList IS TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER; */ /* @author foolstudio@qq.com */ /* All rights reserved. 未經(jīng)許可,不得用于商業(yè)用途 */ /* */ /***************************************************************************/ --分隔符長度 C_LEN int; --刪除空格后的字符串 v_str varchar2(256); --分隔符位置 v_pos int; --子字符串 v_sub varchar2(256); --數(shù)組計數(shù)器 v_i int; --結(jié)果 Result fs.stringList; BEGIN v_str := TRIM(v_string); --dbms_output.put_line(v_str); v_pos := INSTR(v_str, v_sep); v_i := 0; C_LEN := LENGTH(v_sep); --無匹配,整字符串返回 IF v_pos < 1 AND LENGTH(v_str) > 0 THEN Result(v_i) := v_str; return Result; END IF; WHILE v_pos > 0 LOOP v_sub := SUBSTR(v_str, 0, v_pos-1); --添加到結(jié)果數(shù)組 IF LENGTH(v_sub) > 0 THEN Result(v_i) := v_sub; v_i := v_i+1; END IF; --dbms_output.put_line(v_sub); v_str := SUBSTR(v_str, v_pos+C_LEN); --dbms_output.put_line(v_str); v_pos := INSTR(v_str, v_sep); END LOOP; --已無匹配,剩余字符串添加到結(jié)果數(shù)組 IF LENGTH(v_str) > 0 THEN Result(v_i) := v_str; END IF; --調(diào)試
代碼注釋相當詳細,不再對代碼進行解釋。
經(jīng)測試,代碼支持ORACLE 10及以上版本。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com