mysql使用instr達(dá)到in(字符串)的效果
使用mysql遇到一種情況:
需要查出id在某一個(gè)id拼接的字符串中的記錄,這個(gè)時(shí)候用id in(id1,id2,...)行不通,因?yàn)閕n語(yǔ)法里面的參數(shù)是數(shù)字型的,應(yīng)該用instr語(yǔ)法,instr(idsStr,id)其中idsStr=‘id1,id2,id3…’
下面舉例說(shuō)明:
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ǔ)法是不行的,因?yàn)閕n語(yǔ)法的參數(shù)不是字符串,可以用下面的方式來(lái)達(dá)到相同效果
select * from t_city where instr('1,2,3',id);
結(jié)果正確。但是如果我要查詢id在字符串’3,4,5,12’里的城市,會(huì)發(fā)現(xiàn)結(jié)果出現(xiàn)偏差,查出了6個(gè)城市
select * from t_city where instr('3,4,5,12',id);
原來(lái)是由于武漢的id為12,而北京id為1,上海的id為2,根據(jù)instr的語(yǔ)義, id=1或2或12都能查出來(lái),所以修改一下查法
select * from t_city where instr(',3,4,5,12,',concat(',',id,','));
總結(jié):
此用法是對(duì)instr函數(shù)一個(gè)偏門的使用,在某些特定的場(chǎng)合下,可以用來(lái)達(dá)到in函數(shù)的效果,但是存在一定的局限性,比如要通過(guò)特殊字符使每個(gè)值構(gòu)成唯一避免出現(xiàn)偏差,使用的時(shí)候要注意。
到此這篇關(guān)于mysql使用instr達(dá)到in(字符串)的效果的文章就介紹到這了,更多相關(guān)mysql使用instr替代in內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql 8.0.18 安裝配置方法圖文教程(linux)
這篇文章主要介紹了linux下mysql 8.0.18 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
mysql存儲(chǔ)過(guò)程中使用游標(biāo)的實(shí)例
使用MYSQL存儲(chǔ)過(guò)程,可以實(shí)現(xiàn)諸多的功能,下面將為您介紹一個(gè)MYSQL存儲(chǔ)過(guò)程中使用游標(biāo)的實(shí)例2014-01-01
Window Docker 安裝MySQL8.0的過(guò)程詳解
本文給大家介紹在Windows環(huán)境下安裝Docker并配置MySQL容器的全流程介紹,過(guò)程中還涉及到文件映射和客戶端連接MySQL的操作,感興趣的朋友跟隨小編一起看看吧2024-11-11
MySQL?優(yōu)化?index?merge引起的死鎖分析
這篇文章主要介紹了MySQL?優(yōu)化?index?merge引起的死鎖分析,MySQL通過(guò)優(yōu)化索引合并是遇到的死鎖問(wèn)題,下面具體分析需要的小伙伴可以參考一下2022-04-04
如何優(yōu)雅安全的備份MySQL數(shù)據(jù)
這篇文章主要介紹了如何優(yōu)雅安全的備份MySQL數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-10-10
關(guān)于MySQL中“Insert into select“ 的死鎖情況分析
這篇文章主要介紹了關(guān)于MySQL中“Insert into select“ 的死鎖情況分析,死鎖是指兩個(gè)或者多個(gè)事務(wù)在同一資源上的相互占用,并請(qǐng)求鎖定對(duì)方占用的資源,從而導(dǎo)致惡性循環(huán)的現(xiàn)象,需要的朋友可以參考下2023-05-05
window10中mysql8.0修改端口port不生效的解決方法
mysql配置文件默認(rèn)位置,端口號(hào)等信息需要在my.ini文件中修改,若修改安裝位置的my-default文件文件或新建my.ini文件是不生效的,本文主要介紹了window10中mysql8.0修改端口port不生效的解決方法,感興趣的可以了解一下2023-11-11
Navicat遠(yuǎn)程連接SQL Server并轉(zhuǎn)換成MySQL步驟詳解
最近遇到一個(gè)需求是將SQL Server轉(zhuǎn)換為 MySQL的格式,由于不想在本地安裝 SQL Server,所以決定在遠(yuǎn)程的 Windows 服務(wù)器上安裝,并在本地使用Navicat遠(yuǎn)程連接它,然而在實(shí)現(xiàn)過(guò)程中遇到了諸多問(wèn)題,記錄于此。感興趣的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-01-01

