談談mysql locate函式

2021-09-19 07:20:13 字數 1216 閱讀 8099

測試環境插入如上資料:

場景1,我麼需要查詢所有名字中含有 王 的所有資料,用like很簡單

select * from user where name like '%王%' order by id;
那麼使用locate如何去實現呢,首先我們先看看locate的用法,如下為官方給出的該函式的詳細使用說明

意思也比較簡單

locate(substr,str)

locate(substr,str,pos)

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查詢。

mysql locate索引 MYSQL索引優化

1.檢視sql的執行頻率 mysql 客戶端連線成功後,通過 show session global status 命令可以提供伺服器狀態資訊。show session global status 可以根據需要加上引數 session 或者 global 來顯示 session 級 當前連線 的計結...

談談python函式傳參

上一次學習python語法的時候,被函式的引數弄得有些迷糊,究其原因,首先python函式的引數形態確實不那麼單純,更重要的一點是,本人當時沒有弄清楚,為什麼要學python,沒有把想把它當作主力語言的想法。但結合現在行業的狀況和這段時間自身的經歷來看,python確實是最有錢途 對不起我這麼直白 ...

今天談談純函式和不純函式

純函式的定義是 如果函式的呼叫引數相同,則永遠返回相同的結果。它不依賴於程式執行期間函式外部任何狀態或資料的變化,必須只依賴於其輸入引數。該函式不會產生任何可觀察的 例如網路請求,輸入和輸出裝置或資料突變 mutation 這就是純的函式。如果乙個函式符合上述 2 個要求,它就是純函式。反之則不是純...