2014-05-22 64 views
3

目前,我的數據庫字符集Latin1意味着MySQL的匹配()反對()區分大小寫

SELECT * FROM TABLE MATCH(column1) AGAINST('"words here"' IN BOOLEAN MODE) 

將只返回大小寫的搜索。但問題是,我的數據庫將通過不敏感且區分大小寫的搜索進行搜索。有沒有辦法解決這個問題,以便我可以使用同一張表進行搜索?這是甚至可能的,或者我將被迫使用latin1_bin字符集製作一個表來查詢用戶的搜索是否區分大小寫。

回答

1

我想起了一個天真的方法:將文本兩次存儲在兩個不同的列(兩個不同的索引)中。一個是latin1_bin(用於區分大小寫的搜索),另一個是latin1_*_ci(用於區分大小寫的搜索)。

旁註:

  1. 這是使用二進制排序(如latin1_bin)具有等副作用,例如治療重音字符作爲collation,不字符編碼(又名字符集)
  2. 事項與非重音對應物不同(例如「é」<>「e」)。