PLSQL之Split截取字符串
2015-10-20 16:53
260 查看
oracle中并没有截取字符串的函数,所以当我们需要提取字符串并进行截取的时候,就需要自己写一个split了。
首先我们需要定义一个table类型。
创建function。
查询显示。
或者进行其他处理。进行其他处理的时候,我们涉及到从table类型中取出结果,刚开始的时候使用varchar2类型进行接收数据,然后并不能行。
后来采用了下面的方法
首先我们需要定义一个table类型。
CREATE OR REPLACE TYPE split_type IS TABLE OF VARCHAR2 (500);table()函数,这个还需要继续学习。可以自行百度。
创建function。
create or replace function strsplit(p_value varchar2,p_split varchar2 := ';') return split_type pipelined is v_idx integer; v_str varchar2(500); v_strs_last varchar2(4000) := p_value; --<span style="font-family: Arial, Helvetica, sans-serif;">p_split 分隔符号 </span> begin v_strs_last := REPLACE(v_strs_last , '","' , ';');--字符串转换。 v_strs_last := substr(v_strs_last,2,lengthb(v_strs_last)-2);--去掉开头结尾的引号 。 loop v_idx := instr(v_strs_last, p_split); exit when v_idx = 0; v_str := substr(v_strs_last, 1, v_idx - 1); v_strs_last := substr(v_strs_last, v_idx + 1); pipe row(v_str); end loop; pipe row(v_strs_last); return; end strsplit;
查询显示。
select * from table(strsplit('"tom","jack","jerry","jobs","panda"'));
或者进行其他处理。进行其他处理的时候,我们涉及到从table类型中取出结果,刚开始的时候使用varchar2类型进行接收数据,然后并不能行。
declare TYPE split_type IS TABLE OF VARCHAR2 (4000); attrvalues split_type; begin select * into attrvalues from table(strsplit('"tom","jack","jerry","jobs","panda"'))) dbms_output.put_line('转换完成之后:'||attrvalues.column_value); end;
后来采用了下面的方法
declare TYPE split_type IS TABLE OF VARCHAR2 (4000); attrvalues split_type; begin for attrvalues in(select * from table(strsplit('"tom","jack","jerry","jobs","panda"'))) loop dbms_output.put_line('转换完成之后:'||attrvalues.column_value); end loop; end;
相关文章推荐
- 【转】Oracle存储过程常用技巧
- 【MySQL】【leetcode】 Duplicate Emails解题报告
- oracle 死锁
- 【转】Oracle存储过程学习
- 32位plsql配置连接64位ORACLE 11g的方法
- SQL HOWTO
- SQL的四种连接-左外连接、右外连接、内连接、全连接
- ubuntu mysql使用
- SQLserver数据库中关于递归的查询使用
- SQLserver数据库中关于递归的查询使用
- 新安装的Mysql5.5数据库使用mybatis提示插入数据成功并且主键已经自增,但是数据表中没有数
- oracle免安装服务器,pl/sql加instantclient的配置使用
- 什么是数据库事务
- mac下安装mysql5.6.27和MySQLWorkbench问题解决办法
- MYSQL数据库使用UTF-8中文编码乱码的解决办法
- Hibernate 因别名引起的Column Not Found(Mysql)
- 如何用Excel直接查询Oracle中的数据
- sql查询条件:闭区间和开区间(>=和>)效率分析
- vs2013添加mysql对EF的支持(转+说明)
- Exception for Android 1 - com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create