MySQL字符串与特殊字符的比较

标签 mysql special-characters collation

我创建了一个与数据库中的名称列表相匹配的自动完成功能。

我正在使用的数据库包含大量带有特殊字符的名称,但最终用户很可能会使用这些名称的英文等效项进行搜索,例如Bela Bartok 对应 Béla BartókDvorak 对应 Dvořák 等。目前,进行英语搜索不会返回任何结果。

我遇到过一些帖子,说解决这个问题的方法是将 MySQL 排序规则更改为 utf8(我已经这样做了,但没有成功)。

我认为这可能是因为我使用了utf8_unicode_ci,但是能够得到我想要的结果的是utf8_general_ci。但后者的问题是所有评论都说不再使用它。

有谁知道如何解决这个问题吗?

最佳答案

如果您知道特殊字符列表以及简单英语中的等效字符是什么,则可以执行以下操作:

  1. 小写字符串
  2. 将字符替换为等效的小写字母
  3. 搜索“简单英语”列

您将需要使用 MySQL 的全文搜索来搜索文本或提出一个自行开发的解决方案来处理该问题。

关于MySQL字符串与特殊字符的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31987985/

相关文章:

mysql - 使用命令提示符和 MySQLInstanceConfig.exe 配置 MySQL

javascript - 如何使用 JavaScript 替换用一个换行符替换一系列回车符/换行符?

连接两个字符以创建转义序列

ms-access - vbCompareMethod 的枚举成员中缺少 vbUseCompareOption

php - 如何使用 Laravel 5.6 在 Laravel Eloquent 中实现嵌套 MySQL 查询

mysql - 什么时候在 mysql 中使用 Union

mysql - 是否可以在 mysql 或 mongodb 中针对特定字段按顺序保存数据?

linux - 为什么 ^M 和 ^[ 被附加到我的文件中?

mysql - 在 MySQL 中对日语字符(汉字、平假名、片假名)进行排序

mysql - (MySQL 5.7.19 AWS RDS)如何在不加锁的情况下更改表列字符集