一年前,我们将数据迁移到MySQL。由于编码不匹配,许多奇怪的字符(Ã,ª,€等)被插入到记录中。我们想跟踪整个数据库中的所有这些字符。
我尝试了以下查询。
select * from <table_name> where <field_name> regexp '[^a-zA-Z0-9&,$\'"() .-]'
它给了我所有的条目,除了az,AZ,0-9,&amp;,逗号,美元,单引号,双引号,括号,空格,句点,连字符之外还有任何字符。特定表格的<field_name>
。
但要找到所有奇怪的字符需要花费很多时间,因为我们有大约93个表格,每个表格大约有20个字段。
有没有更好的方法来解决这个问题?
再次使用正确的编码设置重新导入不是一个选项,因为从那时起数据发生了很大的变化。
答案 0 :(得分:1)
你提到的字符看起来像utf-8数据呈现,好像它是ASCII或Latin-1八位字符。
这是一篇关于如何找到问题的帖子。它比你的方法效果更好,并且在字符集匹配方面超级自律。
How can I find non-ASCII characters in MySQL?
您能提供包含此垃圾的其中一个表的表定义吗?这样我们就可以看到表格和列的字符集和整理设置。