如何在MySql表中更新编码错误的字符?

时间:2016-06-23 09:30:14

标签: php mysql non-ascii-characters

在现有数据库中,我们发现了一些文本条目,其中带有重音的字符编码错误。

以下查询:

SELECT 
    PR.Product_Ref__ AS ProductCode,
    CONCAT(P.Name, IF (PR.Misc <> '', CONCAT(' ', PR.Misc), '')) AS Name
FROM
    Product AS P
        INNER JOIN
    Product_Ref AS PR ON P.Product__ = PR.Product__
WHERE
    Name like "%é%" AND
    PR.Product_Ref__ IN ( 659491, 657274 )

返回描述问题的两行:

enter image description here

有时候,带有重音的e已被正确插入,有时则没有。

如何使用UPDATE ... WHERE ...来检测和更新此类问题?或者我应该使用不同的陈述/方法吗?

P.S。:相应的应用程序是用PHP开发的。

P.S.2:建议的可能重复问题中的答案并未解决我提出的问题。它与数据库的整理无关。

1 个答案:

答案 0 :(得分:1)

您可以简单地检测要纠正的所有事件,并使用简单的更新子句进行替换。

您描述的案例示例:

UPDATE Product
SET Name = REPLACE(Name, 'é', 'é')
WHERE Name like '%é%'

您可以使用命令行或在特定的mysql用户界面客户端应用程序中直接在mysql数据库中运行此更新。或者如果你愿意,可以使用在数据库中运行sql语句的php函数。