MySQL哪个校对可以比较西里尔语和拉丁语相等?

时间:2018-05-01 15:46:12

标签: mysql collation

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

例如在塞尔维亚,正式使用拉丁语和西里尔字符......可互换使用。我想也许塞尔维亚拉丁语和西里尔语有一个特殊的校对,但是我看到它只是分开的版本。

有可能这样做吗?怎么样?

1 个答案:

答案 0 :(得分:0)

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

我建议你做以下事情:

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

罗马化可能最适合您的应用。在SQL中执行它将是一个长期混乱的嵌套REPLACE(REPLACE(...))