oracle 根据特殊字符将一个字段拆分成多个字段
createtabletest_001(test_idCHAR(6),test_nameVARCHAR2(2000))select*fromtest_001test_id...
create table test_001
( test_id CHAR(6),
test_name VARCHAR2(2000))
select * from test_001
test_id test_name
ab0001 ABCD+北京市朝阳区富贵小区3号楼1单元101+100000+平邮
将这个表(test_001)中的test_name 字段根据‘+’拆分,然后存入另一张表,效果如下:
select * from test_003
test_id test_name1 test_name2 test_name3 test_name4
ab0001 ABCD 北京市朝阳区富贵小区3号楼1单元101 100000 平邮
我现在的方法很笨,用下面这个拆出前后部分,然后在不停向下分,有些麻烦,各位有没有什么好办法,谢谢大家了!
select Substr(test_name,1,INSTR(test_name,'+')-1)
from test_001 展开
( test_id CHAR(6),
test_name VARCHAR2(2000))
select * from test_001
test_id test_name
ab0001 ABCD+北京市朝阳区富贵小区3号楼1单元101+100000+平邮
将这个表(test_001)中的test_name 字段根据‘+’拆分,然后存入另一张表,效果如下:
select * from test_003
test_id test_name1 test_name2 test_name3 test_name4
ab0001 ABCD 北京市朝阳区富贵小区3号楼1单元101 100000 平邮
我现在的方法很笨,用下面这个拆出前后部分,然后在不停向下分,有些麻烦,各位有没有什么好办法,谢谢大家了!
select Substr(test_name,1,INSTR(test_name,'+')-1)
from test_001 展开
1个回答
展开全部
用正则:
SELECT REGEXP_SUBSTR('ABCD+北京市朝阳区富贵小区3号楼1单元101+100000+平邮', '[^+]+', 1, 1),
REGEXP_SUBSTR('ABCD+北京市朝阳区富贵小区3号楼1单元101+100000+平邮', '[^+]+', 1, 2),
REGEXP_SUBSTR('ABCD+北京市朝阳区富贵小区3号楼1单元101+100000+平邮', '[^+]+', 1, 3),
REGEXP_SUBSTR('ABCD+北京市朝阳区富贵小区3号楼1单元101+100000+平邮', '[^+]+', 1, 4)
FROM DUAL
如果你想要列都自动的话,就需要 table(cast(multiset + pivot
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询