在MySQL中使用单个UPDATE规范化字段

时间:2012-03-22 15:22:48

标签: mysql replace normalization canonicalization

有没有办法使用单个查询执行规范化字段的更新?

示例:

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

2 个答案:

答案 0 :(得分:1)

您可以链接替换调用,因此可以在单个查询中完成:

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

但这很快变成了一个难以维持的混乱局面。如果您只是尝试用非重音等效替换重音字符,那么更改字符集可能会更有用。

答案 1 :(得分:0)

如果你想要替换所有字母表,那么就像这样替换你所有人都在谈论变得一团糟。 您可以制作一个包含两个列的表,例如第一列包含'á',第二列'a'类似于整数。 然后创建一个过程来获取新表的每一行,然后完成替换。