在我的项目中,如果用户在搜索字段中输入西里尔字母“Дог”,我需要数据库返回“Dog”,反之亦然。喜欢音译搜索吗?...
例如,在塞尔维亚,正式使用拉丁字符和西里尔字符......可以互换。我想也许有一个针对塞尔维亚拉丁语和西里尔语的特殊排序规则,但据我所知,只有单独的版本。
可以这样做吗?怎么办?
最佳答案
我很确定 utf8/utf8mb4 排序规则都不会处理 D
=Д
(等)。
我建议您执行以下操作:
- 表格中有一个额外的列。它将是字符串的“罗马化”版本。索引此列。 (可以是
CHARACTER SET latin1
;我不知道什么是最好的COLLATION
;也许这并不重要。) - 插入行时,计算该额外列的字符串。
- 还可以将任何搜索字符串罗马化。然后搜索该新列。
罗马化可能最好在您的应用程序中完成。在 SQL 中执行此操作将是一个漫长而困惑的嵌套 REPLACE(REPLACE(...))
关于MySQL 哪种排序规则可以将西里尔字母和拉丁字母进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50119533/