1

我想将 A 替换为 APPLE,将 E 替换为 Elephant

当我运行第一个查询时,它将 A 替换为 APPLE,然后当我再次运行时,它正在替换

E 到 Elephant 和 APPLE 到 APPLELEPHANT(苹果最后有 e)但我不想这样做

表1(mysql表)

CODE 

A    
E
C   

当我运行此更新表 1 设置代码 = 替换(代码,'A','APPLE');

它正在转换为

CODE 

APPLE    
E
C   

没关系!

当我运行这个更新 table1 set code = replace(code, 'E', 'ELEPHANT');

CODE 

APPLELEPHANT    
ELEPHANT
C   

苹果也在转换我不想要这样

谢谢!

4

2 回答 2

0

不,MySQL 一次只能替换一个字符串,所以无论如何你都会遇到这个问题。如果您在 PHP 中获取数据,则可以strtr通过将字符串数组作为参数传递来替换字符串。(请注意,即使str_replace也允许使用子字符串数组,它也会遇到同样的问题。)

于 2013-05-15T21:45:57.717 回答
0

如果您的字符串仅包含字母字符,则可以采用“中间”方法:

select replace(replace(replace(replace(code, 'A', '1'), 'E', '2), '1', 'Apple'), '2', 'Elephant)
from table1

当然,如果值中有 1 和 2,这将不起作用。因此,您可以改为移动到其他字符,例如 $、%、^、& * 等。

从某种意义上说,我的想法解决方案是分隔每个字符,将初始字符串变成如下内容:

<A>
<E>
<C>

然后要做:

select replace(replace(eplace(replace(newcode, '<A>', 'Apple'), '<E>', 'Elephant'), '<', ''), '>', '')

如果您的代码确实是单个字符,那么您可以采用这样的方法。

于 2013-05-15T22:10:47.393 回答