+ -
当前位置:首页 → 问答吧 → 如何将一个字符串转化成一个表?

如何将一个字符串转化成一个表?

时间:2011-09-06

来源:互联网

字符串 1,0,100,5;2,100,500,20;3,500,1000,40;

转化成如下表
1 0 100 5
2 100 500 20
3 500 1000 40

作者: terryhuang   发布时间: 2011-09-06

知道字符串的固定格式吗?

如果格式固定的话,可以通过截取字符串来解决

用截取函数substring

作者: delphisanding1   发布时间: 2011-09-06

SQL code
sys@TBWORA> with a as (select ';'||'1,0,100,5;2,100,500,20;3,500,1000,40;' as str1 from dual),
  2       b as (select substr(str1, instr(str1,';',1,level)+1,
  3                                 instr(str1,';',1,level+1)-instr(str1,';',1,level)-1) as str2
  4              from a connect by level <=length(a.str1)-length(replace(a.str1,';','')) ),
  5       c as (select str2,
  6                    substr(str2,1, instr(str2,',',1,1)-1) as str2_p1,
  7                    substr(str2,instr(str2,',',1,1)+1,instr(str2,',',1,2)-instr(str2,',',1,1)-1) as str2_p2,
  8                    substr(str2,instr(str2,',',1,2)+1,instr(str2,',',1,3)-instr(str2,',',1,2)-1) as str2_p3,
  9                    substr(str2,instr(str2,',',1,3)+1) as str2_p4
 10             from b )
 11  select c.str2, c.str2_p1, c.str2_p2, c.str2_p3, c.str2_p4 from c;

STR2                STR2_P1      STR2_P2      STR2_P3      STR2_P4
------------------- ------------ ------------ ------------ ------------
1,0,100,5           1            0            100          5
2,100,500,20        2            100          500          20
3,500,1000,40       3            500          1000         40

作者: luoyoumou   发布时间: 2011-09-06

SQL code
with a as (select ';'||'1,0,100,5;2,100,500,20;3,500,1000,40;' as str1 from dual),
     b as (select substr(str1, instr(str1,';',1,level)+1,
                               instr(str1,';',1,level+1)-instr(str1,';',1,level)-1) as str2 
            from a connect by level <=length(a.str1)-length(replace(a.str1,';','')) )
select b.str2 from b;

STR2
------------------------------------------------------------
1,0,100,5
2,100,500,20
3,500,1000,40


-- 上一步是拆分分号(;),下一步是拆分逗号(,) (如果你每部分的逗号最多三个,即:最多四个字段,则可以这样写:)
with a as (select ';'||'1,0,100,5;2,100,500,20;3,500,1000,40;' as str1 from dual),
     b as (select substr(str1, instr(str1,';',1,level)+1,
                               instr(str1,';',1,level+1)-instr(str1,';',1,level)-1) as str2 
            from a connect by level <=length(a.str1)-length(replace(a.str1,';','')) ),
     c as (select str2, 
                  substr(str2,1, instr(str2,',',1,1)-1) as str2_p1,
                  substr(str2,instr(str2,',',1,1)+1,instr(str2,',',1,2)-instr(str2,',',1,1)-1) as str2_p2,
                  substr(str2,instr(str2,',',1,2)+1,instr(str2,',',1,3)-instr(str2,',',1,2)-1) as str2_p3,
                  substr(str2,instr(str2,',',1,3)+1) as str2_p4
           from b )
select c.str2, c.str2_p1, c.str2_p2, c.str2_p3, c.str2_p4 from c;

作者: luoyoumou   发布时间: 2011-09-06

观望罗老湿。

作者: xl_smlie   发布时间: 2011-09-06

热门下载

更多