从数据库中删除字符“”

时间:2014-05-07 09:25:31

标签: php mysql database

出于某种原因,我的数据库中有一个无效字符“”。

当我查找字符“”时,它会将其搜索为常规“A”。

如何删除“”的所有实例?

1 个答案:

答案 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)整理。