我有一个来自数据库的字符串字段,其中包含以下格式的数据: 可以显示UW:,Loading :, CBE:字段
ex1:
"[UW:Loading25,CBE]
[Loading: 100;120;130]
[CBE:150;170;190]"
ex2:
"[UW: CBE]
[CBE: 100;122;130]"
ex3:
"[UW:Loading25]
[Loading: 100;120;130]"
我必须将它们分为以下不同的列:
UW | Loading | CBE
--------------|----------------|------------
Loading25,CBE | 100;120;130 | 150;170;190
--------------|----------------|------------
CBE | |100;122;130
--------------|----------------|------------
Loading25 | 100;120;130 |
请帮助您解决这个问题。
答案 0 :(得分:0)
您可以将regexp_substr
与ltrim
一起用于每种搜索模式:
with t(str) as
(
select '[UW:Loading25,CBE][Loading: 100;120;130][CBE:150;170;190]' from dual union all
select '[UW: CBE][CBE: 100;122;130]' from dual union all
select '[UW:Loading25][Loading: 100;120;130]' from dual
)
select ltrim(regexp_substr(str,'UW:([^]]+)'),'UW:') as uw,
ltrim(regexp_substr(str,'Loading:([^]]+)'),'Loading:') as loading,
ltrim(regexp_substr(str,'CBE:([^]]+)'),'CBE:') as cbe
from t;
UW LOADING CBE
------------- ------------- ------------
Loading25,CBE 100;120;130 150;170;190
CBE 100;122;130
Loading25 100;120;130
在模式匹配期间应注意重复的单词,例如Loading
或CBE
。