如何删除MySQL中的重音符号?
我刚刚编制了一个包含 100 万个地名的数据库。我将在自动完成小部件中使用它来查找城市。很多地方都有重音...我希望能够在用户键入不带重音的名称时找到记录。
为了做到这一点,我有一个第二列,其中包含未重音的名称副本。其中许多记录仍然是空白的,所以我想编写一个查询来填充它们。这在直接 MySQL 中可能吗?如果是这样,怎么办?
I've just compiled a database of 1 million place names. I'm going to use it in an auto-complete widget to look up cities. A lot of these places have accents... I want to be able to find records when a user types the name without an accent.
In order to do this, I've got a 2nd column with an unaccented copy of the name. Many of these records are still blank, so I want to write a query to fill them in. Is this possible in straight MySQL? If so, how?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
如果您为列设置了适当的排序规则,那么该字段中的值将自然地与其不带重音符号的等效值进行比较。
If you set an appropriate collation for the column then the value within the field will compare equal to its unaccented equivalent naturally.
我遇到了同样的问题,所以我根据 PHP 脚本编写了一个查询列表,我必须删除重音符号并使 SEO 友好的 URL:
也许您想添加其他特殊字符,例如
$
或£
符号...I had the same problem, so I wrote a list of querys based on a PHP script I have to remove accents and make SEO friendly URLs:
Maybe you would like to add other special characters, such as the
$
or£
symbols...我分享这个也许可以帮助......:
I share this maybe can help....:
这是一个使用单个查询的简单解决方案:
在此示例中:
希望有帮助!
如果您尝试使用 mysql 生成 slug 字段,您也可以检查此变体:
生成从名称列中提取名称列?
Here is an easy solution with a single query :
In this example :
Hope it helps !
You can also check this variant if you try to generate a slug field with mysql :
Easy way of generating a slug name column from the name column?
user3245067的解决方案很棒,但它使用会话变量。
这是使用局部变量以及 mysql 5.5 的 DETERMINISTIC 关键字的解决方案。在 mysql-5.5 中使用德语变音符号进行了测试。
The solution of user3245067 is great, but it uses session variables.
This is the solution with local variables and also with DETERMINISTIC keyword for mysql 5.5. Tested with german umlaute in mysql-5.5.
我想知道 MariaDB 的
REGEXP_REPLACE(col, 'e', 'e')
与 utf8_unicode_ci 是否会同时执行所有e
操作。I wonder if MariaDB's
REGEXP_REPLACE(col, 'e', 'e')
with utf8_unicode_ci would do all thee
s at once.这是一个基于 WordPress 的 remove_accents() 的重音去除函数。
唯一的区别是:
$chars
数组。Here is an accent removal function based on WordPress's remove_accents().
The only differences are:
$chars
array was ported over.这是我发现的最快、最有效的方法:
This is the fastest and most efficient way I found:
查看有关
CONVERT()
和CAST()
的 MySQL 手册:http://dev.mysql.com/doc/refman/5.0/en/charset-convert.htmlCheck out the MySQL manual on
CONVERT()
andCAST()
: http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html