查找完全匹配,然后替换MySQl查询

时间:2013-05-15 21:35:24

标签: mysql

我想将A替换为APPLE,将E替换为大象

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

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

table1(mysql表)

CODE 

A    
E
C   

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

正在转换为

CODE 

APPLE    
E
C   

没关系!

当我运行此更新表时,设置代码=替换(代码,' E',' ELEPHANT');

CODE 

APPLELEPHANT    
ELEPHANT
C   

APPLE也在转换我不想这样

谢谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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'), '<', ''), '>', '')

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