方法一:sql实现方法之正则表达式 可以使用 Oracle 自带的正则函数 regexp_count 和 regexp_substr 来实现,这种方法很简单,并且考虑了字符串以分隔符结尾的情况。但要注意的是,该方法中使用的正则函数 regexp_substr 在10g及以后的版本中执行都是比较顺利的,而regexp_count 函数则需要在11g及以后的版本中才能执行。
我们需要创建一个名为SPLIT_STRING的存储过程,它接受两个参数:一个是要拆分的字符串,另一个是分隔符,该存储过程将返回一个包含拆分后的子字符串的表。 CREATE OR REPLACE PROCEDURE SPLIT_STRING (p_string IN VARCHAR2, p_delimiter IN VARCHAR2, p_result OUT SYS_REFCURSOR) IS v_string LONG := p_stri...
RETURN V_OUT; END F_SPLIT_STRING; OK,到此功能已经实现, 三、调用 Sql代码 SELECT * FROM TABLE(F_SPLIT_STRING(‘1,2,3,4,5,6′,’,’)) DECLARE V_ARRAY T_RET_TABLE; BEGIN V_ARRAY := F_SPLIT_STRING(‘1,2,3,4,5,6′,’,’); FOR I IN 1..V_ARRAY.COUNT LOOP DBMS_OUTPUT.P...
将“目标字符串”以“指定字符串”进行拆分,并通过表结构返回结果 CREATEORREPLACETYPE str_splitISTABLEOFVARCHAR2(4000);CREATEORREPLACEFUNCTIONsplitstr(p_stringINVARCHAR2, p_delimiterINVARCHAR2)RETURNstr_split PIPELINEDASv_lengthNUMBER:=LENGTH(p_string); v_startNUMBER:=1; v_indexNUMBER;BEGINWHILE(v_...
CREATE OR REPLACE FUNCTIONsplit(p_string IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN sys.odcinumberlist PIPELINED IS v_start INTEGER := 1; v_end INTEGER; BEGIN LOOP v_end := INSTR(p_string, p_delimiter, v_start); EXIT WHEN (NVL(v_end, 0) = 0); ...
PIPE ROW(V_STRING); EXIT; END IF; END LOOP; END; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 完成以上两步,split函数就可以正常使用了。 随后,我们在Functions当中就能够看到该函数啦。 4.效果展示 调用语法: ...
=',')RETURNTYPE_SPLITPIPELINEDISIDX PLS_INTEGER;V_STRING VARCHAR2(4000) :=SPLIT_STRING;BEGINLOOPIDX :=INSTR(V_STRING, SPLIT_DELIMITER);IF IDX>0THENPIPEROW(SUBSTR(V_STRING,1, IDX-1));V_STRING :=SUBSTR(V_STRING, IDX+LENGTH(SPLIT_DELIMITER));ELSEPIPEROW(V_STRING);EXIT;ENDIF;ENDLOOP;...
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 AS v_length NUMBER := LENGTH(p_string);...
Oracle SplitStr函数并不是Oracle数据库自带的标准函数,但是可以通过自定义函数来实现字符串分割操作。以下是一个示例的自定义函数来实现字符串分割: CREATE OR REPLACE FUNCTION SplitStr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN sys.odcivarchar2list PIPELINED AS v_start_pos PLS_INTEGER := 1...
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_splitPIPELINEDASv_length NUMBER:=LENGTH(p_string);v_start...