2013-05-15 93 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'), '<', ''), '>', '') 

如果你的代碼是真的一個字符,那麼你可以採取這樣的方法。