【发布时间】:2018-02-19 06:43:04
【问题描述】:
当需要不同的排序规则时,如何根据文化有效地对字符串列执行 ORDER BY?也就是说,来自不同文化的用户的数据存储在同一个表和同一列中,但每个用户自然希望看到根据其语言环境排序的数据(语言环境当然是已知的,并且在表中的每一行都是固定的)。并且表可能很长,因此列需要和索引,并且不能在应用程序端进行后处理到所需的排序规则(这是数据库任务做繁重的工作,对吧?)。
例如,utf8_general_ci 产生与 utf8_swedish_ci 不同的结果。
虽然我认为这个问题对于任何国际项目都应该是显而易见的,但我找不到任何合适的解决方案。我自己只能想象以下解决方案,它们不是很好,我怀疑没有更好的办法:
- 为每个排序规则使用单独的字段
- 也许,可以为每种文化创建一个视图并进行相应的索引(虽然我没有使用过 MariaDB 视图,所以这是相当理论的)
- 使用单独的“代理”字段进行排序,可能是 VIRTUAL
现在,如果只有一个可排序的字符串列,但可能有多个。解决此问题的预期和正确方法是什么?
【问题讨论】:
标签: mysql mariadb collation culture