2013-05-15 56 views
1

我想更换一个向苹果和E大象查找精确匹配,然后替换MySQL查询

,当我跑第一次查询它替换了苹果公司,然后,当我再次运行它替换

E至大象和苹果APPLELEPHANT(苹果有在最后五),但我不想这样做

表1(MySQL表)

CODE 

A  
E 
C 

当我运行此更新table1 set code = replace(code,'A','APPLE');

它转化为

CODE 

APPLE  
E 
C 

是OK!

当我运行此更新table1设置code = replace(code,'E','ELEPHANT');

CODE 

APPLELEPHANT  
ELEPHANT 
C 

苹果也恐难我不希望这样的

谢谢!

回答

0

不,MySQL一次只能替换一个字符串,因此无论如何你都会遇到这个问题。如果您使用PHP读取数据,则可以通过传递一组字符串作为参数来替换字符串strtr。 (需要注意的是,即使str_replace还允许使用子阵列,它是受了同样的问题。)

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'), '<', ''), '>', '') 

如果你的代码是真的一个字符,那么你可以采取这样的方法。