您现在的位置是:网站首页> 编程资料编程资料
Oracle 自定义split 函数实例详解_oracle_
2023-05-27
568人已围观
简介 Oracle 自定义split 函数实例详解_oracle_
Oracle 自定义split 函数
Oracle没有提供split函数,但可以自己建立一个函数实现此功能。比如“abc defg hijkl nmopqr stuvw xyz”,分隔符是空格,但空格个数不定。
源代码:
CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000); CREATE OR REPLACE FUNCTION fn_var_split ( p_str IN VARCHAR2, p_delimiter IN VARCHAR2 ) RETURN ty_str_split IS j INT := 0; len INT := 0; str VARCHAR2 (4000); str_split ty_str_split := ty_str_split (); v_str VARCHAR2 (4000) := RTRIM (LTRIM (p_str, p_delimiter), p_delimiter); BEGIN len := LENGTH (v_str); WHILE len > 0 LOOP j := INSTR (v_str, p_delimiter, 1); IF j = 0 THEN str := SUBSTR (v_str, 1); len := 0; str_split.EXTEND; str_split (str_split.COUNT) := str; ELSE str := SUBSTR (v_str, 1, j - 1); v_str := LTRIM (LTRIM (v_str, str), p_delimiter); len := LENGTH (v_str); str_split.EXTEND; str_split (str_split.COUNT) := str; END IF; END LOOP; RETURN str_split; END fn_var_split; /
测试:
结果:
1 12 123 1234 12345
DECLARE CURSOR c IS SELECT * FROM TABLE (CAST (fn_var_split (';1;12;;123;;;1234;;;;12345;', ';') AS ty_str_split)); r c%ROWTYPE; BEGIN OPEN c; LOOP FETCH c INTO r; EXIT WHEN c%NOTFOUND; DBMS_OUTPUT.put_line (r.column_value); END LOOP; CLOSE c; END; / 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
相关内容
- Oracle 11g Client客户端安装教程_oracle_
- Oracle 10g安装配置方法图文教程_oracle_
- Oracle中转义字符的详细介绍_oracle_
- 详解Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作_oracle_
- Oracle minus用法详解及应用实例_oracle_
- linux系统oracle数据库出现ora12505问题的解决方法_oracle_
- Oracle 中 table 函数的应用浅析_oracle_
- Linux下安装Oracle 11g出现prvf-0002错误解决办法_oracle_
- Oracle用户密码设为不过期的两种方法_oracle_
- 分享Oracle 11G Client 客户端安装步骤(图文详解)_oracle_
