MySQL中替代Like模糊查詢的函數(shù)方式
mysql替代Like模糊查詢的函數(shù)
通常我們模糊查詢都是用like關(guān)鍵字
比如:
查詢name中包含 '王' 字 的
SELECT name FROM employees where name LIKE '%王%'
查詢以 '王' 字開頭的name
SELECT name FROM employees where name LIKE '王%'
查詢以 '王' 字結(jié)尾的name
SELECT name FROM employees where name LIKE '%王'
替代like的三種方式
1、使用LOCATE(substr,str)函數(shù)
SELECT name FROM employees where LOCATE('王',name)>0 // 相當(dāng)于Like '%王%'(>0可省略) SELECT name FROM employees where LOCATE('王',name)=1 // 相當(dāng)于Like '王%' SELECT name FROM employees where LOCATE('王',name)=0 // 相當(dāng)于 NOT Like '%王%'
2、使用POSITION(substr IN str)函數(shù)
SELECT name FROM employees where POSITION('王'IN name)>0 //相當(dāng)于LIKE '%王%' SELECT name FROM employees where POSITION('王'IN name)=1 //相當(dāng)于LIKE '王%' SELECT name FROM employees where POSITION('王'IN name)=0 //相當(dāng)于 NOT LIKE '%王%'
3、使用INSTR(str,substr)函數(shù) 跟LOCATE(substr,str)類似 只是參數(shù)位置換了
SELECT name FROM employees where INSTR(name,'王')>0 //相當(dāng)于 like '%王%' (>0可省略) SELECT name FROM employees where INSTR(name,'王')=1 //相當(dāng)于 like '王%' SELECT name FROM employees where INSTR(name,'王')=0 //相當(dāng)于 not like '%王%'
4、使用FIND_IN_SET(str,strlist) 注意:該字段存的必須是多個(gè)值
比如name字段中存的是(張三,李四,王五)這種數(shù)據(jù)
SELECT name FROM employees where FIND_IN_SET('王五',name)
MySQL代替like模糊查詢更高效的方法
MySQL-locate()函數(shù)
LOCATE(substr,str,pos)
返回substr字符串在str里pos(起始位置)出現(xiàn)的位置,沒有返回0
注:pos必須大于第一次出現(xiàn)的位置,才能顯示第二次出現(xiàn)的位置
直接用like查詢效率較低:
SELECT id,vari_sku,prod_s_id,prod_s_sku from prod_sync_s_shopee where vari_sku LIKE '%+%';
用locate()函數(shù)的替代寫法:
SELECT id,vari_sku,prod_s_id,prod_s_sku from prod_sync_s_shopee where locate('+',prod_sync_s_shopee.vari_sku) <> 0;
其他函數(shù):
POSITION()
INSTR()
FIND_IN_SET()
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql查詢不需要Group?by的字段方法實(shí)例
在平時(shí)的開發(fā)任務(wù)中我們經(jīng)常會用到MYSQL的GROUP BY分組,用來獲取數(shù)據(jù)表中以分組字段為依據(jù)的統(tǒng)計(jì)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Mysql查詢不需要Group?by字段方法的相關(guān)資料,需要的朋友可以參考下2024-04-04MySQL sum后再計(jì)算percentage的多種解決辦法
這篇文章主要介紹了MySQL sum后再計(jì)算percentage的多種解決辦法,over() 函數(shù),Cross Join,Select 嵌套查詢以及 with 函數(shù)處理,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-06-06