查一张表:test(id,name,classid),其中classid 内容为这种形式的: 1101000,1504002,2008020
我查询:
   select * from test where 1101000 in (classid) 能查询出记录,
但 如果是 classid 内容中的中间内容,用 in 就查询不出记录,只能用like查询。
后来我以为要加 单引号,这样查询还是不行,
    select * from test where '1504002' in (concat('''',replace(cityid,',',''','''),''''))
有高手给解释一下怎么用 in 方法,多谢

解决方案 »

  1.   

    select * from test where 1101000 in (classid)
    OR
    INSTR(classid,1101000)>0
    中间内要用INSTR、LOCATE函数
      

  2.   

    select * from test where 1101000 in (classid) OR INSTR(classid,1101000)>0 
    or
    select * from test where 1101000 in (classid) OR locate(1101000,classid)>0 
      

  3.   

    多谢,请教一下 instr、locate 与 like 比较,哪个速度更快些呢?
      

  4.   

    LIKE快一些,对字符操作速度慢一些,在各种数据库中是一样的