如何trim Oracle中不同列的文本
How to trim the text in different columns in Oracle
我有一个来自数据库字段的字符串,其中包含以下格式的数据。 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 |
我该如何解决?
您可以将 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
等重复词
我有一个来自数据库字段的字符串,其中包含以下格式的数据。 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 |
我该如何解决?
您可以将 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
等重复词