谈谈mysql locate函数
生活随笔
收集整理的這篇文章主要介紹了
谈谈mysql locate函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大家都知道,當我們mysql需要使用模糊查詢的時候,往往會使用like去做相關查詢條件的模糊匹配,但是很多場景下,使用locate會獲取同樣的效果
create table user(id int primary key auto_increment,name varchar(18),description varchar(255) ) charset=UTF8;select * from user order by id;
測試環境插入如上數據:
場景1,我么需要查詢所有名字中含有 王 的所有數據,用like很簡單
那么使用locate如何去實現呢,首先我們先看看locate的用法,如下為官方給出的該函數的詳細使用說明
意思也比較簡單
1,從str的起始位置開始匹配str中的substr串,如果匹配上,返回下標,如果沒有匹配上,返回0,如果substr或者str為null的時候,返回null
2,表示從下標為pos(int值)處開始匹配
使用locate實現上述效果:
select * from user where locate('王',name)但是如果我現在需求是找出所有名字中含有王,但是不姓王的人找出來,使用like就不太好實現了,但是使用locate就很容易實現,我們用下面那種實現方式如下
select * from user where locate('王',name,2)
我們從第2個字符串開始匹配,就很把所有姓王的給過濾掉了
關于locate的用法如上,結合具體的業務,配合合理的數據庫設計,可以很容易避開復雜的like查詢。
問題:但是有一種說法是在同樣數據量情況下,使用locate查詢比使用like效率要高,但是查看語句的執行計劃,二者是一模一樣的,不明白是為什么,官方也沒找到相關說明,還望知道的大神可以留言一起交流一波!
總結
以上是生活随笔為你收集整理的谈谈mysql locate函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第七周:字符串 + 数组 + 指针
- 下一篇: Arduino 常用函数参考文档