RubenQs Asked: 2020-03-09 13:06:42 +0800 CST 2020-03-09 13:06:42 +0800 CST 2020-03-09 13:06:42 +0800 CST PL/SQL 字符替换 772 我需要在 oracle 中替换每个特定字符。 例如: cadena= '12121113' 我需要将“1”更改为“2”,但只有位置 3 的“1”。 并将修改后的结果返回给我。 因此,它应该保留'12221113'。 我希望我已经很好地解释了自己。 oracle 3 Answers Voted Best Answer Andrew Paes 2020-03-09T13:33:56+08:002020-03-09T13:33:56+08:00 使用此查询,它将查看第三个“case when”值等于 1。 SUBSTR 函数 如果结果为真,则连接子字符串的第一部分,然后连接要更改的部分,然后将其与其字符串的末尾连接。 如果为 false,则返回 true。 select case when substr('12121113', 3, 1) = 1 then substr('12121113', 1, 2) || replace(substr('12121113', 3, 1), '1', '2') || substr('12121113', 4) else '12121113' end as modified from dual Osmar Murillo 2020-12-08T08:43:01+08:002020-12-08T08:43:01+08:00 作为替代方案,我留给您以下代码。你可以利用 instr instr('12121113','1',2) 查询将如下 select substr('12121113',1,instr('12121113','1',2)-1)|| replace(substr('12121113',instr('12121113','1',2),1),'1','2')|| substr('12121113',instr('12121113','1',2)+1,length(12121113)) from dual Christian Salas 2020-02-01T12:21:00+08:002020-02-01T12:21:00+08:00 鲁本 这种方式比以前的方式更短,但关键在于正则表达式,我确信必须有一个更短的解决方案,只有一个正则表达式。 SELECT SUBSTR(REGEXP_REPLACE('12121113','1','2',3,1),1,3) || SUBSTR('12121113',4) FROM DUAL; 结果:12221113
使用此查询,它将查看第三个“case when”值等于 1。
SUBSTR 函数
如果结果为真,则连接子字符串的第一部分,然后连接要更改的部分,然后将其与其字符串的末尾连接。
如果为 false,则返回 true。
作为替代方案,我留给您以下代码。你可以利用 instr
查询将如下
鲁本
这种方式比以前的方式更短,但关键在于正则表达式,我确信必须有一个更短的解决方案,只有一个正则表达式。