就像在我的表列中一样,first_name 由值组成
名:
leena,
stev,
neene,
ajay,
vine.
我的问题是我只想用“s”替换第一次出现的字符“e”,而另一个出现的“e”必须保持不变,即不会被“s”替换。我需要像下面这样的输出。
lsena,
stsv,
nsene,
ajay,
vins.
尝试这个:
select regexp_replace(first_name,'e','s',1,1)
from your_table
regexp_replace 函数在这里解释: http ://www.java2s.com/Book/Oracle/String_Functions/REGEXP_REPLACE_function.htm
另一个变体,不像 那样优雅regexp_replace
,但也可以:
with example_data as (
select 'leena' field0 from dual union all
select 'stev' field0 from dual union all
select 'neene' field0 from dual union all
select 'ajay' field0 from dual union all
select 'vine' field0 from dual
)
select
field0,
decode( instr(field0,'e'),
0, field0,
substr(field0,1,instr(field0,'e')-1) || 's' || substr(field0,instr(field0,'e')+1))
from
example_data
只是为了说明。
Mostly we can use 'regexp_replace' to replace particular character from a particular occurrence.
最简单的解决方案之一:
SELECT REPLACE(
SUBSTR(COLUMN_NAME, 1,
instr(COLUMN_NAME,'e',1)),
'e', 's')
|| SUBSTR(COLUMN_NAME,
INSTR(COLUMN_NAME,'e',1)+1,
LENGTH(COLUMN_NAME))
FROM TABLE_NAME