mysql - MySQL 哪种排序规则可以将西里尔文和拉丁文进行比较?
问题描述
在我的项目中,如果用户在搜索字段中输入西里尔字母“Дог”,我需要数据库返回“Dog”,反之亦然。像音译搜索?...
例如,在塞尔维亚,正式使用拉丁字符和西里尔字符......可以互换使用。我想也许塞尔维亚拉丁语和西里尔语有一个特殊的排序规则,但我看到只有分开的版本。
有可能这样做吗?如何?
解决方案
我很确定没有一个 utf8/utf8mb4 归类处理D
= Д
(等)。
我建议您执行以下操作:
- 表中有一个额外的列。它将是字符串的“罗马化”版本。索引此列。(可以
CHARACTER SET latin1
;我不知道什么是最好的COLLATION
;也许没关系。) - 当您插入一行时,计算这个额外列的字符串。
- 还将任何搜索字符串罗马化。然后搜索该新列。
罗马化可能最好在您的应用程序中完成。在 SQL 中执行此操作将是一个长期混乱的嵌套REPLACE(REPLACE(...))