2013-07-16 24 views
0

是否有可能在MySQL中定義一個特殊比較器用於索引?MySQL用戶定義的比較器

說我有兩個鍵,A.Zeb*ra.OR.Zebra.Z。我已經用這種方式給用戶提供了一些額外的信息,但爲了平等的目的,我可以去掉結尾並刪除額外的*。在Java中,我可以通過實現Comparator接口來實現。對MySQL有沒有類似的想法?

我會過得更好只是創造一個像

A.Zeb*ra.O 1 
R.Zebra.Z 1 
L.Horse.P 2 

一個額外的連接表指定兩個特定字符串相等,並保持此表最新當其它表的變化?

回答

1

您不能像Java中那樣定義比較器等。排序規則可能有效,但我對這些規則沒有經驗。關閉我的頭頂,這裏有一些替代品:

  1. 寫一個用戶定義的函數來做比較。這會相對較慢並且不可能優化。

  2. 存儲每行的規範排序值。你可以用觸發器來計算它的值。例如,你的表看起來像這樣。

    Thingie  CanonicalThingie 
    ----------- ---------------- 
    A.Zeb*ra.O Zebra 
    R.Zebra.Z Zebra 
    L.Horse.P Horse 
    
  3. 重新考慮您的設計。如果A.Zeb*ra.0的值意味着三到四件事情,那麼可能需要分成三列或四列。您可能會面臨更多的挑戰,而不僅僅是整理它。