如果在MySQL中一個表中存著一個字段包含多個Id,應該如何處理呢,下面就為您介紹這種MySQL字符串問題的處理方法,希望對您學習MySQL字符串方面能有所幫助。
1、新建表
- drop table if exists Category;
- create table Category
- (
- cateId int(5) not null AUTO_INCREMENT,
- chiName varchar(80),
- primary key (cateId)
- );
- drop table if exists OpenRecord;
- create table OpenRecord
- (
- opreId int(5) not null AUTO_INCREMENT,
- cateIds varchar(80),
- primary key (opreId)
- );
2、初始化數據
- insert Category(chiName) values ('fish'),('shrimp'),('crab'),('tiger');
- insert OpenRecord(cateIds) values('1,2');
- insert OpenRecord(cateIds) values('2,3');
3、查詢OpenRecord中Id為1包括的Category。
#錯誤的方法
- select *
- from Category
- where (select INSTR(cateIds,cateId) from OpenRecord where opreId=1)
#正確的方法
- select *
- from Category
- where (select FIND_IN_SET(cateId,cateIds) from OpenRecord where opreId=1)
用INSTR會出現當ID大於10的時候,查ID為1的數據,會把1,10,11,12......的都拿出來。
4、擴展會出現的問題。
用FIND_IN_SET可以解決ID是用","號隔開的問題。然而會有另外的兩種情況。
A、當ID不包含",",但是用別的符號分開時,如用"|"。我們有如下的解決辦法
- select *
- from Category
- where (select FIND_IN_SET(cateId,REPLACE(cateIds,'|',',')) from OpenRecord where opreId=1)
以上就是該MySQL字符串問題的處理方法。
帶參數的MySql存儲過程
查看三種MySQL字符集的方法
帶您深入了解MySQL默認字符集
MySQL刪除外鍵定義的方法
使用MySQL外鍵的四個條件