mysql使用instr達(dá)到in(字符串)的效果
使用mysql遇到一種情況:
需要查出id在某一個id拼接的字符串中的記錄,這個時候用id in(id1,id2,...)
行不通,因?yàn)閕n語法里面的參數(shù)是數(shù)字型的,應(yīng)該用instr語法,instr(idsStr,id)
其中idsStr=‘id1,id2,id3…’
下面舉例說明:
1 建表
create table t_city (id int(10) ,name varchar(20));
insert into t_city values (1,'北京'),(2,'上海'),(3,'廣州'),(4,'深圳'),(5,'杭州'),(12,'武漢');
2 查詢
現(xiàn)在我需要查詢id在字符串’1,2,3’里的城市,但是用in語法是不行的,因?yàn)閕n語法的參數(shù)不是字符串,可以用下面的方式來達(dá)到相同效果
select * from t_city where instr('1,2,3',id);
結(jié)果正確。但是如果我要查詢id在字符串’3,4,5,12’里的城市,會發(fā)現(xiàn)結(jié)果出現(xiàn)偏差,查出了6個城市
select * from t_city where instr('3,4,5,12',id);
原來是由于武漢的id為12,而北京id為1,上海的id為2,根據(jù)instr的語義, id=1或2或12都能查出來,所以修改一下查法
select * from t_city where instr(',3,4,5,12,',concat(',',id,','));
總結(jié):
此用法是對instr函數(shù)一個偏門的使用,在某些特定的場合下,可以用來達(dá)到in函數(shù)的效果,但是存在一定的局限性,比如要通過特殊字符使每個值構(gòu)成唯一避免出現(xiàn)偏差,使用的時候要注意。
到此這篇關(guān)于mysql使用instr達(dá)到in(字符串)的效果的文章就介紹到這了,更多相關(guān)mysql使用instr替代in內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL常用SQL語句總結(jié)包含復(fù)雜SQL查詢
今天小編就為大家分享一篇關(guān)于MySQL常用SQL語句總結(jié)包含復(fù)雜SQL查詢,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02MySQL插入數(shù)據(jù)insert?ignore語法重復(fù)數(shù)據(jù)自動忽略
這篇文章主要給大家介紹了關(guān)于MySQL插入數(shù)據(jù)insert?ignore語法重復(fù)數(shù)據(jù)自動忽略的相關(guān)資料,最近工作中使用到了insert ignore into語法,感覺這個語法還是挺有用的,就記錄下來做個總結(jié),需要的朋友可以參考下2023-08-08MySQL需要關(guān)注的參數(shù)及狀態(tài)變量解讀
這篇文章主要介紹了MySQL需要關(guān)注的參數(shù)及狀態(tài)變量解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02MySQL設(shè)置global變量和session變量的兩種方法詳解
這篇文章主要介紹了MySQL設(shè)置global變量和session變量的兩種方法,每種方法給大家介紹的非常詳細(xì) ,需要的朋友可以參考下2018-10-10mysql插入數(shù)據(jù)INSERT INTO SET的優(yōu)勢
這篇文章介紹了mysql插入數(shù)據(jù)INSERT INTO SET的優(yōu)勢,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12