在 Oracle sql 中连接两个列值
Concatenate two column values in Oracle sql
我有两列。
Values Units
1.0 m
1.0 - 5.0 m
empty null
10,15,20 Km
我想连接值和单位。
但是如果我使用下面的 select 我得到的结果是
select
case when unit is null then value
else CONCAT(cast(value as varchar(100)), unit)
end as new_value
from table;
values
1.0 m
1.0 - 5.0 m
empty
10,15,20 km
我希望它是
Values
1.0m
1.0m - 5.0m
empty
10km,15km,20km.
你会试试这个代码吗? “table1”是数据准备CTE(常用table表达式)。您可以将最后一个 select 语句与 regexp_replace 函数一起使用。 '(\d+)' 搜索数字组,然后为每个数字组添加 unit。
with table1("value", Units) as
(
select '1.0', 'm' from dual union all
select '1.0 - 5.0', 'm' from dual union all
select 'empty', null from dual union all
select '10,15,20', 'Km' from dual
)
select regexp_replace("value",'(\d+\.\d+|\d+)',''||units) new_value
from table1;
我有两列。
Values Units
1.0 m
1.0 - 5.0 m
empty null
10,15,20 Km
我想连接值和单位。
但是如果我使用下面的 select 我得到的结果是
select
case when unit is null then value
else CONCAT(cast(value as varchar(100)), unit)
end as new_value
from table;
values
1.0 m
1.0 - 5.0 m
empty
10,15,20 km
我希望它是
Values
1.0m
1.0m - 5.0m
empty
10km,15km,20km.
你会试试这个代码吗? “table1”是数据准备CTE(常用table表达式)。您可以将最后一个 select 语句与 regexp_replace 函数一起使用。 '(\d+)' 搜索数字组,然后为每个数字组添加 unit。
with table1("value", Units) as
(
select '1.0', 'm' from dual union all
select '1.0 - 5.0', 'm' from dual union all
select 'empty', null from dual union all
select '10,15,20', 'Km' from dual
)
select regexp_replace("value",'(\d+\.\d+|\d+)',''||units) new_value
from table1;