在oracle中分隔字符串csv

时间:2014-04-30 13:50:03

标签: oracle csv plsql

有一个csv字符串,其值为“A1; B2; C3”,需要获取单独的值,然后将值插入表中 怎么分开这个字符串? 编辑: 我用这个

SELECT TRIM(SUBSTR(txt ,  INSTR (txt, ';', 1, level ) + 1, 
                          INSTR (txt, ';', 1, level+1) - INSTR (txt, ';', 1, level) -1 
                              ) 
                        )
                    AS TOKEN
            FROM ( SELECT ';'||'8;9;7;6'||';' AS txt  FROM dual )
            CONNECT BY level <= LENGTH(txt)-LENGTH(REPLACE(txt,';',''))-1

并获取单独的值,但需要将这些值设置为变量

1 个答案:

答案 0 :(得分:0)

目前尚不清楚是否要将它们插入1条记录或创建一套。

如果要插入单个字段,可以使用SUBSTR和INSTR函数,如下所示:

with s as (select ';' || 'aa;bb;cc' || ';' str from dual)
select 
substr(s.str,instr(s.str, ';',1,1)+1, instr(s.str, ';',1,2)-instr(s.str, ';',1,1)-1), 
substr(s.str,instr(s.str, ';',1,2)+1, instr(s.str, ';',1,3)-instr(s.str, ';',1,2)-1), 
substr(s.str,instr(s.str, ';',1,3)+1, instr(s.str, ';',1,4)-instr(s.str, ';',1,3)-1)
from s

If you want to create a set