+ -
当前位置:首页 → 问答吧 → PL/SQL中编写一个函数:取原字符串 123;asd;33;e4 以分号为分隔符的字符串,例如我需要取第一个,得到的值应该为123 ,取第四个就是e4

PL/SQL中编写一个函数:取原字符串 123;asd;33;e4 以分号为分隔符的字符串,例如我需要取第一个,得到的值应该为123 ,取第四个就是e4

时间:2011-09-09

来源:互联网

求大神帮忙!!!

作者: hu070309   发布时间: 2011-09-09

SQL code
存储过程一个参数传入1,2,3,4,5类似的一个字符串,然后要把1   2   3   4   5插入表 
比如 
insert   into   table(colum)values(1); 
insert   into   table(colum)values(2); 
insert   into   table(colum)values(3); 
insert   into   table(colum)values(4); 
insert   into   table(colum)values(5); 

请问如何做?是否要用拆分函数,然后用动态sql?

--------------------------------
select sname from test;

SNAME
---------
1,2,3,4,5

SQL> 
SQL> select substr(','||t1.sname||',',
  2                instr(','||t1.sname||',',',',1,rn)+1,
  3                instr(','||t1.sname||',',',',1,rn+1)-instr(','||t1.sname||',',',',1,rn)-1) as new_name
  4    from test t1,
  5         (
  6          select rownum rn
  7            from all_objects
  8           where rownum <= 10
  9         )t2
 10   where instr(','||t1.sname||',',',',1,rn+1) > 0;

NEW_NAME
-----------
1
2
3
4
5

作者: dawugui   发布时间: 2011-09-09

直接instr与substr就可以了

instr取需截取的位置,然后在substr

作者: hanzs   发布时间: 2011-09-09