是否可以在MySQL中定义一个特殊的比较器来进行索引?
说我有两个键,A.Zeb*ra.O
和R.Zebra.Z
。我以这种方式编写它们给用户提供一些额外的信息,但出于平等目的,我可以删除结束并删除额外的*
。在Java中,我可以通过实现Comparator
接口来实现这一点。 MySQL有类似的想法吗?
仅仅创建一个额外的连接表(如
)会更好吗?A.Zeb*ra.O 1
R.Zebra.Z 1
L.Horse.P 2
指定两个特定字符串是否相等,并在另一个表更改时使该表保持最新状态?
答案 0 :(得分:1)
您可以创建新的排序规则,类似于创建比较器但仅限于字符串。见http://dev.mysql.com/doc/refman/5.6/en/adding-collation.html
答案 1 :(得分:1)
您不能像Java等那样定义比较器。整理可能有效,但我没有经验。在我的头顶,这里有一些选择:
编写用户定义的函数进行比较。这将相对缓慢且无法优化。
为每行存储规范排序值。您可以使用触发器计算其值。例如,您的表格看起来像这样。
Thingie CanonicalThingie
----------- ----------------
A.Zeb*ra.O Zebra
R.Zebra.Z Zebra
L.Horse.P Horse
重新考虑您的设计。如果A.Zeb*ra.0
值意味着三件或四件事,则可能需要将其拆分为三列或四列。您可能面临的挑战不仅仅是排序。