如何在Oracle中将字符串中第一个出现的字符'e'替换为's'?

8ulbf1ek  于 2023-11-17  发布在  Oracle
关注(0)|答案(3)|浏览(185)

就像在我的表中一样,列first_name由值组成
用户名:

leena,
stev,
neene,
ajay,
vine.

字符串
我的问题是,我只想用's'替换第一个出现的字符'e',另一个出现的'e'必须保持不变,即它不会被's '替换。

lsena,
stsv,
nsene,
ajay,
vins.

7kqas0il

7kqas0il1#

试试这个:

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

sqyvllje

sqyvllje2#

另一个变体,不像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

字符串
SQLFiddle
只是为了说明。

tyu7yeag

tyu7yeag3#

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

相关问题