實際項目中經常會有一個字段存儲多個值用逗號分隔的場景,當分開查詢的時候,使用模糊查詢會非常影響效率。mysql提供了全文檢索函數可以有效解決這一問題:
1.數據結構
ID | CODE | MSG |
---|---|---|
1 | 1111111,2222222,3333333 | 數據一 |
2 | 4444444,5555555 | 數據二 |
2.創建Full Text類型索引
當我們要以CODE為條件使用全文檢索查詢的時候,首先要給CODE字段創建Full Text類型索引:
create fulltext index index_CODE on table(CODE)
3.查詢語句
比如我們要查詢CODE中包含2222222的數據
SELECT * FROM table WHERE MATCH (CODE) AGAINST ('2222222')
4.特殊情況說明
全文檢索函數識別分隔符不僅有“,”還有“-”,實際項目中經常會用到一串編碼來標識一條數據(比如商城的訂單號),編碼中就經常出現“-”,這種情況全文檢索也會識別成分隔符,比如:
ID | CODE | MSG |
---|---|---|
1 | 111-1111,222-2222,333-3333 | 數據一 |
2 | 444-4444,555-5555 | 數據二 |
解決方案:第一步和第二步不變,查詢語句修改為:
SELECT * FROM table WHERE MATCH (CODE) AGAINST ('"222-2222"')