SQL怎么用ID字符串查询ID

发布网友 发布时间:2022-04-23 06:58

我来回答

3个回答

热心网友 时间:2022-04-09 22:30

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)

热心网友 时间:2022-04-09 23:48

where ID in (" & ID_str & ")”

热心网友 时间:2022-04-10 01:23

别带引号 where ID in (D_str)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com