2011-05-04 35 views
2

我想從mysql表中的字段替換多個單詞。我一直在使用多個步驟:我如何替換mysql中的多個鍵

update table1 set fld1=replace(fld1,'and', ''); 
update table1 set fld1=replace(fld1,'or', ''); 
update table1 set fld1=replace(fld1,'xor', ''); 
... 

我該如何做到單步?

+0

http://stackoverflow.com/questions/1671040/can-mysql-replace-multiple-characters – jimy 2011-05-04 08:08:28

回答

4

醜陋的方式...

UPDATE table1 SET fld1 = replace(replace(replace(fld1, 'and', ''), 'xor', ''), 'or', '') 

請注意,如果「異或」前更換「或」它會匹配「異」的一部分,離開了X,所以順序是非常重要的。

+3

+1可能出現「xor」和「or」問題。 – 2011-05-04 08:09:51

+0

傻瓜證明將圍繞單詞與空格'替換(fld1,'或','')',這樣你就不會匹配_oral_和_orb_ – Laas 2011-05-04 08:11:19

+0

什麼可以是更好的方式,如果它是醜陋的方式...... – KoolKabin 2011-05-04 09:46:51

1

您可以撰寫replace電話:

update table1 
set fld1 = replace(replace(replace(fld1, 'xor', ''), 'or', ''), 'and', ''); 

我認爲這是你可以在MySQL做到最好,而不額外的用戶定義的函數編譯。 PostgreSQL和(AFAIK)Oracle有完整的正則表達式支持,但MySQL只支持正則表達式匹配。

如果你必須做很多這樣的事情,那麼你可能想在數據庫之外做一個合理的解決方案,不涉及瘋狂的嵌套replace函數的水平。