SQL怎么用ID字符串查询ID

变量stringID_str="1,2,3,4"表中是INT型ID这要怎么查询如果直接whereIDin("+ID_str+")”会出现列名'+XX+'无效回复... 变量string ID_str= "1,2,3,4"

表中是INT型ID 这要怎么查询
如果直接where ID in ("+ID_str+")”会出现 列名 '+XX+' 无效回复
展开
 我来答
du瓶邪
推荐于2018-05-06 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2973万
展开全部
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)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinaboyzyq
2014-05-02 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3292万
展开全部
where ID in (" & ID_str & ")”
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜玄冬
2014-05-02 · 超过71用户采纳过TA的回答
知道小有建树答主
回答量:230
采纳率:100%
帮助的人:141万
展开全部
别带引号 where ID in (D_str)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式