Oracle:将第一个字符替换为其他字符

时间:2016-09-01 12:56:20

标签: sql oracle oracle11g

我在oracle中有一个表,其中有一列数据为n_str = str(n),表示第一个字母始终为B12345,后跟数字。我想将所有此类实例替换为B

BH

因此,如果该列中有一个名为 BH 45678的值,则不会更新。

仅在找到B后跟数字需要更新的位置。

2 个答案:

答案 0 :(得分:4)

使用B获取regexp_like后跟数字的行。然后使用replaceB替换为BH这些行。

select replace(col,'B','BH')
from tablename
where regexp_like(col,'^B\d+$')

答案 1 :(得分:2)

with
     inputs( str ) as (
       select 'B123' from dual union all
       select 'BONE' from dual union all
       select 'BH55' from dual union all
       select 'Z123' from dual union all
       select 'B13H' from dual
     )
select str, regexp_replace(str, '^B(\d)', 'BH\1') as new_str
from   inputs
;

STR  NEW_STR
---- -------
B123 BH123
BONE BONE
BH55 BH55
Z123 Z123
B13H BH13H

5 rows selected.