2012-03-22 42 views
0

是否有任何方法可以使用單個查詢來執行規範化字段的更新?使用MySQL中的單個UPDATE規範化字段

例子:

UPDATE person SET name = REPLACE(name, 'á', 'a'); 
UPDATE person SET name = REPLACE(name, 'é', 'e'); 
UPDATE person SET name = REPLACE(name, 'í', 'i'); 
UPDATE person SET name = REPLACE(name, 'ó', 'o'); 
UPDATE person SET name = REPLACE(name, 'ú', 'u'); 
+0

也許你可以在sql中編寫一個多替換函數。 – biziclop 2012-03-22 15:24:42

+1

你可能想看看mysql中用戶定義的正則表達式替換函數。 http://stackoverflow.com/questions/1755408/mysql-regex-replace – Gohn67 2012-03-22 15:29:05

回答

1

您可以鏈替換調用,因此它可以在一個單一的查詢來實現:

UPDATE person SET name = REPLACE(REPLACE(REPLACE(name, 'á', 'a'), 'é', 'e'), 'í', 'i') 

不過這很快成爲一個不可維護的混亂。如果您只是試圖用它們的不重疊的等價替換重音字符,也許字符集更改會更有用。

0

如果你想替換所有的字母,換成這樣的話,你所有人都在談論變得混亂。 您可以創建一個表,其中第一列包含'á'和第二個'a'兩列,類似於整個列。 ,然後創建一個過程來獲取每個新表的每一行,然後完成替換。