国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

解決MySQL數據庫中文模糊檢索問題的方法

2024-07-24 12:43:36
字體:
來源:轉載
供稿:網友
在 MySQL下,在進行中文模糊檢索時,經常會返回一些與之不相關的記錄,如查找 "%a%" 時,返回的可能有中文字符,卻沒有a字符存在。本人以前也曾遇到過類似問題,經詳細閱讀MySQL的Manual,發現可以有一種方法很方便的解決并得到滿意的結果。

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

  以下為引用的內容:


  
Code:
select id,title,name from achech_com.news where title like '%a%'


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

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

  以下為引用的內容:


  
Code:
select id,title,name from achech_com.news where binary title like '%a%'


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


  
Code:
select id,title,name from achech_com.news

  where binary ucase(title) like concat('%',ucase('a'),'%')

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


  
Code:
select id,title,name from achech_com.news where binary ucase(title) like ucase('%a%')


  檢索的結果還算滿意吧,不過速度可能會因此而慢N毫秒。

您可能感興趣的文章:

Mybatis使用MySQL模糊查詢時輸入中文檢索不到結果怎么辦MYSQL必知必會讀書筆記第四章之檢索數據MYSQL必知必會讀書筆記第五章之排序檢索數據Mysql5.7忘記root密碼及mysql5.7修改root密碼的方法mysql 5.7.13 winx64安裝配置方法圖文教程mysql 5.7.13 安裝配置方法圖文教程(linux)mysql 5.7.16 安裝配置方法圖文教程mysql 5.7.14 安裝配置方法圖文教程mysql 5.7.12 winx64安裝配置方法圖文教程深度解析MySQL 5.7之中文全文檢索
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 胶州市| 图木舒克市| 武城县| 蓝山县| 白玉县| 乐陵市| 武宁县| 绍兴县| 万源市| 西峡县| 岳池县| 项城市| 宜君县| 蒙阴县| 南川市| 麻江县| 青海省| 南溪县| 秦皇岛市| 瑞金市| 东乌珠穆沁旗| 常熟市| 永新县| 祁门县| 桓仁| 长葛市| 昌乐县| 攀枝花市| 尉氏县| 元阳县| 苏尼特右旗| 隆尧县| 兴安县| 汕尾市| 曲周县| 金堂县| 高邮市| 台南市| 海南省| 麻江县| 五寨县|