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);
結果正確。但是如果我要查詢id在字符串’3,4,5,12’里的城市,會發(fā)現(xiàn)結果出現(xiàn)偏差,查出了6個城市
select * from t_city where instr('3,4,5,12',id);
原來是由于武漢的id為12,而北京id為1,上海的id為2,根據instr的語義, id=1或2或12都能查出來,所以修改一下查法
select * from t_city where instr(',3,4,5,12,',concat(',',id,','));
總結:
此用法是對instr函數(shù)一個偏門的使用,在某些特定的場合下,可以用來達到in函數(shù)的效果,但是存在一定的局限性,比如要通過特殊字符使每個值構成唯一避免出現(xiàn)偏差,使用的時候要注意。
到此這篇關于mysql使用instr達到in(字符串)的效果的文章就介紹到這了,更多相關mysql使用instr替代in內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
mysql 8.0.18 安裝配置方法圖文教程(linux)
這篇文章主要介紹了linux下mysql 8.0.18 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-11-11
MySQL?優(yōu)化?index?merge引起的死鎖分析
這篇文章主要介紹了MySQL?優(yōu)化?index?merge引起的死鎖分析,MySQL通過優(yōu)化索引合并是遇到的死鎖問題,下面具體分析需要的小伙伴可以參考一下2022-04-04
關于MySQL中“Insert into select“ 的死鎖情況分析
這篇文章主要介紹了關于MySQL中“Insert into select“ 的死鎖情況分析,死鎖是指兩個或者多個事務在同一資源上的相互占用,并請求鎖定對方占用的資源,從而導致惡性循環(huán)的現(xiàn)象,需要的朋友可以參考下2023-05-05
window10中mysql8.0修改端口port不生效的解決方法
mysql配置文件默認位置,端口號等信息需要在my.ini文件中修改,若修改安裝位置的my-default文件文件或新建my.ini文件是不生效的,本文主要介紹了window10中mysql8.0修改端口port不生效的解決方法,感興趣的可以了解一下2023-11-11
Navicat遠程連接SQL Server并轉換成MySQL步驟詳解
最近遇到一個需求是將SQL Server轉換為 MySQL的格式,由于不想在本地安裝 SQL Server,所以決定在遠程的 Windows 服務器上安裝,并在本地使用Navicat遠程連接它,然而在實現(xiàn)過程中遇到了諸多問題,記錄于此。感興趣的朋友們下面來一起學習學習吧。2017-01-01

