[英]oracle split comma delimited string into columns
我有一张桌子
Charge_num mapping_col
--------- -----------
p1.pm.100 1.1.1,1000
p1.pm.110 1.2.1,1000
p1.pm.120 1.3.1,1000
我需要将“ mapping_col”分成两列,如下所示:
Charge_num wbs obs
--------- --- ---
p1.pm.100 1.1.1 1000
p1.pm.110 1.2.1 1000
p1.pm.120 1.3.1 1000
select charge_num,
substr(mapping_col,1,instr(mapping_col,',',1)-1) AS first_half,
substr(mapping_col, instr(mapping_col,',',1)+1) as last_half
from your_table
请注意,将数字存储为字符串的做法容易出错。 如果将这些结果转换为NUMBER(9),如果数据不规则,则可能会意外中断
REGEXP_SUBSTR
来解救!
with sample_data as (select 'p1.pm.100' charge_num, '1.1.1,1000' mapping_col from dual union all
select 'p1.pm.110' charge_num, '1.2.1,1000' mapping_col from dual union all
select 'p1.pm.120' charge_num, '1.3.1,1000' mapping_col from dual)
select charge_num,
regexp_substr(mapping_col, '[^,]+', 1, 1) wbs,
regexp_substr(mapping_col, '[^,]+', 1, 2) obs
from sample_data;
CHARGE_NUM WBS OBS
---------- ------------------------------ ------------------------------
p1.pm.100 1.1.1 1000
p1.pm.110 1.2.1 1000
p1.pm.120 1.3.1 1000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.