程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> MySQL使用instr函數模糊查詢

MySQL使用instr函數模糊查詢

編輯:MYSQL入門知識
 

一般SQL中模糊查詢使用like,今天看到一個MySQL使用instr函數模糊查詢的方法:

查詢table表中用戶名包含Cyrec的記錄:

SELECT * FROM table WHERE 1 = instr(`username`,'Cyrec');

等價於SELECT * FROM table WHERE `username` like '%Cyrec%';

(PS:instr這個MySQL函數返回username字段中包含Cyrec的位置,如果沒找到返回0;)

使用like類似‘%xxx%’ 雙向模糊匹配是無法使用索引的,要進行全表掃描('xxx%'這樣滿足最左前綴匹配可以使用索

引效率很高).網上說有大量記錄的時候instr函數效率比用like('%xxx%')高,於是自己在本地試了下,執行時間差不

多用explain看到兩種方式都是進行全表掃描(type=ALL),預計掃描的rows也一樣,然後在status中看到執行計劃預

測的last_query_cost也是一樣。不知道到底哪個好,以後遇到模糊查詢的時間再試下,不過這條SQL語句的思路

挺好的。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved