出于某种原因,我的数据库中有一个无效字符“”。
当我查找字符“”时,它会将其搜索为常规“A”。
如何删除“”的所有实例?
答案 0 :(得分:4)
出于某种原因,我的数据库中有一个无效字符“”。
不,不是“某些原因”。请阅读“The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)”。然后,您将了解“某种”原因以及为什么您(很可能不想要删除该字符,或者如果您仍想要删除它,那么您至少会知道自己是什么重做以及删除该角色的风险是什么。
如果您仍想替换“角色”:
update `mytable` set `somefield` = replace(`somefield`, 'Â', '<replacement>')
这将进行全表扫描/更新;您可能希望更具体,如:
update `mytable` set `somefield` = replace(`somefield`, 'Â', '<replacement>')
where `some_id` in (1, 4, 7, 92, 2973)
...或
update `mytable` set `somefield` = replace(`somefield`, 'Â', '<replacement>')
where `somefield` like '%Â%' collate utf8_bin
在上面的示例中,您将<replacement>
替换为所需的字符,或''
替换为“删除”。
你可能想要阅读charsets and collations(这就是为什么我首先向你指出Spolsky的帖子,因为你必须了解基础知识)然后决定你是否想要使用例如,您的查询为case-sensitive (_cs), case-insensitive collation (_ci) or binary (_bin),为整理。