在现有数据库中,我们发现了一些文本条目,其中带有重音的字符编码错误。
以下查询:
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 )
返回描述问题的两行:
有时候,带有重音的e已被正确插入,有时则没有。
如何使用UPDATE ... WHERE ...来检测和更新此类问题?或者我应该使用不同的陈述/方法吗?
P.S。:相应的应用程序是用PHP开发的。
P.S.2:建议的可能重复问题中的答案并未解决我提出的问题。它与数据库的整理无关。
答案 0 :(得分:1)
您可以简单地检测要纠正的所有事件,并使用简单的更新子句进行替换。
您描述的案例示例:
UPDATE Product
SET Name = REPLACE(Name, 'é', 'é')
WHERE Name like '%é%'
您可以使用命令行或在特定的mysql用户界面客户端应用程序中直接在mysql数据库中运行此更新。或者如果你愿意,可以使用在数据库中运行sql语句的php函数。