MySQL 哪种排序规则可以将西里尔字母和拉丁字母进行比较?

标签 mysql collation

在我的项目中,如果用户在搜索字段中输入西里尔字母“Дог”,我需要数据库返回“Dog”,反之亦然。喜欢音译搜索吗?...

例如,在塞尔维亚,正式使用拉丁字符和西里尔字符......可以互换。我想也许有一个针对塞尔维亚拉丁语和西里尔语的特殊排序规则,但据我所知,只有单独的版本。

可以这样做吗?怎么办?

最佳答案

我很确定 utf8/utf8mb4 排序规则都不会处理 D=Д (等)。

我建议您执行以下操作:

  • 表格中有一个额外的列。它将是字符串的“罗马化”版本。索引此列。 (可以是CHARACTER SET latin1;我不知道什么是最好的COLLATION;也许这并不重要。)
  • 插入行时,计算该额外列的字符串。
  • 还可以将任何搜索字符串罗马化。然后搜索该新列。

罗马化可能最好在您的应用程序中完成。在 SQL 中执行此操作将是一个漫长而困惑的嵌套 REPLACE(REPLACE(...))

关于MySQL 哪种排序规则可以将西里尔字母和拉丁字母进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50119533/

相关文章:

导入时的postgresql和排序规则问题

sql-server - 在区分大小写的 SQL Server 数据库中执行不区分大小写的 Like 查询

php - Wordpress CPU 使用率高

php - 如何使用 json_encode 对这个 mysql 结果进行编码?我究竟做错了什么?

java - 将 swagger 生成的服务器 stub 连接到真实的 mysql 数据库

php - 如何在mysql数据库中存储和获取精确的字符?

mysql - utf8_general_ci : which characters are equal?

PHP数组foreach

mysql - 插入日期字段mysql、struts2 spring hibernate

Mysql转换表,排序规则不变