熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

搞定MySQL數據庫中文模糊檢索問題

2013-11-23 21:01:12  來源: MySQL 

  在 MySQL下在進行中文模糊檢索時經常會返回一些與之不相關的記錄如查找 %a%返回的可能有中文字符卻沒有a字符存在本人以前也曾遇到過類似問題經詳細閱讀MySQL的Manual發現可以有一種方法很方便的解決並得到滿意的結果

  例子

  希望通過標題對新聞庫進行檢索關鍵字可能包含是中英文如下SQL語句

     QUOTE:
select idtitlename from achech_comnews where title like %a%

  返回的結果某些title字段確定帶了a關鍵字而有些則只有中文但也隨之返回在檢索結果中

  解決方法使用 BINARY 屬性進行檢索

    QUOTE:
select idtitlename from achech_comnews where binary title like %a%

  返回的結果較之前正確但英文字母區分大小寫故有時在檢索如Achechachech的結果是不一樣的知道了使用 BINARY 屬性可以解決前面這個問題再看看 MySQL 支持的UCASE 及 CONCAT 函數其中 UCASE 是將英文全部轉成大寫而CONCAT函數的作用是對字符進行連接以下是我們完全解決後的SQL 語句

    QUOTE:
select idtitlename from achech_comnews
where binary ucase(title) like concat(%ucase(a)%)

  檢索的步驟是先將屬性指定為 BINARY 以精確檢索結果而被 like 的 title內容存在大小寫字母的可能故先使用 ucase 函數將字段內容全部轉換成大寫字母然後再進行 like 操作而 like 的操作使用模糊方法使用 concat的好處是傳進來的可以是直接的關鍵字不需要帶%萬用符a直接換成你的變量在任何語言下都萬事無憂了 當然你也可以這麼寫

    QUOTE:
select idtitlename from achech_comnews where binary ucase(title) like ucase(%a%)
  檢索的結果還算滿意吧不過速度可能會因此而慢N毫秒


From:http://tw.wingwit.com/Article/program/MySQL/201311/29449.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.