4

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

名:

leena,
stev,
neene,
ajay,
vine.

我的问题是我只想用“s”替换第一次出现的字符“e”,而另一个出现的“e”必须保持不变,即不会被“s”替换。我需要像下面这样的输出。

lsena,
stsv,
nsene,
ajay,
vins.
4

3 回答 3

21

尝试这个:

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

于 2013-06-08T19:12:59.077 回答
0

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

只是为了说明。

于 2013-06-09T10:07:16.883 回答
0
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
于 2013-06-09T12:33:12.493 回答