MySQL 模糊檢索

2021-07-07 05:39:31 字數 612 閱讀 8143

說到mysql的模糊檢索,大家想到的就是like, 其實除了like之外,mysql還支援正則模式匹配。

可以使用 regexp 、not regexp 或者是 rlike、 not rlike 前後兩對的同義詞,我個人更喜歡rlike。以下對正規表示式做簡單介紹

「.」 乙個英文句點,代表乙個任意字元.

可以用中括號將字元括起來,可以匹配中括號內的任意字元。例如 "[abc]",匹配  "a", "b" , "c"。可以使用 - 解決範圍字元的問題,例如 [a-z] 匹配a-z的26個字母的任意乙個。[0-9]匹配任意數字。

"*"星號 代表0到任意數量的前導匹配,例如  "x*" 匹配任意數量的字母x,"[0-9]*"匹配任意數量的數字,  ".*"這個就厲害了,匹配任意數量的任意字元。

以上正規表示式在檢索的時候,相當於與  前後%的like  %表示式%,例如  rlike 『a』 ,那麼   "abc"  , "cat",   "dddda",都可以被匹配成功,只要有a就好了,不在乎位置。 而我們往往需要匹配以某種模式開始或某種模式結束的表示式,這個時候就需要用到  "^" 和 "$"了,"^" 表示其實,"$"表示結束。 還用剛剛例子 rlike '^a' 就只有abc會被匹配到,cat和dddda則不會匹配。

解決MySQL資料庫中文模糊檢索問題

在 mysql下,在進行中文模糊檢索時,經常會返回一些與之不相關的記錄,如查詢 a 時,返回的可能有中文字元,卻沒有a字元存在。本人以前也曾遇到過類似問題,經詳細閱讀mysql的manual,發現可以有一種方法很方便的解決並得到滿意的結果。希望通過 標題 對新聞庫進行檢索,關鍵字可能包含是中英文,如...

怎樣正確的解決MySQL中文模糊檢索問題

在 mysql 下,在進行中文模糊檢索時,經常會返回一些與之不相關的記錄,如查詢 a 時,返回的可能有中文字元,卻沒有 a 字元存在。本人以前也曾遇到過類似問題,經詳細閱讀 mysql 的 manual 發現可以有一種方法很方便的解決並得到滿意的結果。例子 希望通過 標題 對新聞庫進行檢索,關鍵字可...

搞定MySQL資料庫中文模糊檢索問題

在 mysql下,在進行中文模糊檢索時,經常會返回一些與之不相關的記錄,如查詢 a 時,返回的可能有中文字元,卻沒有a字元存在。本人以前也曾遇到過類似問題,經詳細閱讀mysql的manual,發現可以有一種方法很方便的解決並得到滿意的結果。例子 希望通過 標題 對新聞庫進行檢索,關鍵字可能包含是中英...