我在oracle中有一个表,其中有一列数据为n_str = str(n)
,表示第一个字母始终为B12345
,后跟数字。我想将所有此类实例替换为B
BH
因此,如果该列中有一个名为 BH 45678的值,则不会更新。
仅在找到B后跟数字需要更新的位置。
答案 0 :(得分:4)
使用B
获取regexp_like
后跟数字的行。然后使用replace
将B
替换为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.