建表,模拟上面说的情况,一个字符串字段和三个数值字段,并增加一些记录。
CREATE TABLE t (lenth number,WIDTH number,higth NUMBER,cubo VARCHAR2(100));INSERT INTO t VALUES(0,0,0,'1002050');
INSERT INTO t VALUES(0,0,0,'2001040');
思路是,增加一个中间字段,用字符串赋值中间字段,逐项分离,最后删掉中间字段。
ALTER TABLE t ADD(mid VARCHAR2(100));UPDATE t SET mid=cubo;
UPDATE t SET lenth=SUBSTR(mid,1,instr(mid,'')-1),mid=SUBSTR(mid,instr(mid,'')+1);
UPDATE t SET WIDTH=SUBSTR(mid,1,instr(mid,'')-1),mid=SUBSTR(mid,instr(mid,'')+1);
UPDATE t SET higth=mid;
ALTER TABLE t DROP COLUMN mid;
with sleest as(
select 1 rn,1111111111 a, 1 b, 'c1' c ,'d1' d from dual
union all
select 2,222222 , 3 , 'c2' ,'d2' from dual
)
--select from sleest;
select distinct
--new_rn第一条存值,后续为空
case when levelscolumn_value >1 then null else trn end as new_rn,
trn,
levelscolumn_value as sub_order,
--4可以通过参数传递
trim(regexp_substr(ta, '({1,4})', 1, levelscolumn_value)) as a,
tb,
--c第一条存值,后续为空
case when levelscolumn_value >1 then null else tc end as c ,
td
from sleest t,
table(
cast(
multiset(
--4可以通过参数传递
select level from dual connect by level <= length(regexp_replace(trim(regexp_replace(ta,'({4})','\1 ')), '[^ ]+')) + 1
) as sysOdciNumberList
)
) levels
order by rn, sub_order
构造临时数据:
根据需求参数4进行划分:
参考stackover上的一个解决方案改的,原文地址如下:
>
以上就是关于oracle数据库拆分字段lenth*width*higth字段全部的内容,包括:oracle数据库拆分字段lenth*width*higth字段、oracle数据库,结果集拆分重构。、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)