mysql使用instr達到in(字符串)的效果
使用mysql遇到一種情況:
需要查出id在某一個id拼接的字符串中的記錄,這個時候用id in(id1,id2,...)
行不通,因為in語法里面的參數(shù)是數(shù)字型的,應該用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語法是不行的,因為in語法的參數(shù)不是字符串,可以用下面的方式來達到相同效果
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ù)一個偏門的使用,在某些特定的場合下,可以用來達到in函數(shù)的效果,但是存在一定的局限性,比如要通過特殊字符使每個值構(gòu)成唯一避免出現(xiàn)偏差,使用的時候要注意。
到此這篇關于mysql使用instr達到in(字符串)的效果的文章就介紹到這了,更多相關mysql使用instr替代in內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL插入數(shù)據(jù)insert?ignore語法重復數(shù)據(jù)自動忽略
這篇文章主要給大家介紹了關于MySQL插入數(shù)據(jù)insert?ignore語法重復數(shù)據(jù)自動忽略的相關資料,最近工作中使用到了insert ignore into語法,感覺這個語法還是挺有用的,就記錄下來做個總結(jié),需要的朋友可以參考下2023-08-08MySQL設置global變量和session變量的兩種方法詳解
這篇文章主要介紹了MySQL設置global變量和session變量的兩種方法,每種方法給大家介紹的非常詳細 ,需要的朋友可以參考下2018-10-10mysql插入數(shù)據(jù)INSERT INTO SET的優(yōu)勢
這篇文章介紹了mysql插入數(shù)據(jù)INSERT INTO SET的優(yōu)勢,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-12-12