在 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;