上表中 pids是一个字符串逗号分隔 ;
如果我有一个字符串'11111,11337,112333';要求这个字符串按照逗号分隔 11111  、11337 、112333 只要这里面的字符串出现在pids里面 就查询出来 也就是说上面输入的'11111,11337,112333’只有11337包含在里面 则查询包含的  那么这sql怎么写

解决方案 »

  1.   

    pids中匹配到了11337 全部返回
      

  2.   

    select distinct * from 表名 where exists(
    select * from (
    SELECT 
        SUBSTRING_INDEX(SUBSTRING_INDEX('11111,11337,112333',',',help_topic_id+1),',',-1) AS num 
    FROM 
        mysql.help_topic 
    WHERE 
        help_topic_id < LENGTH('11111,11337,112333')-LENGTH(REPLACE('11111,11337,112333',',',''))+1)t1 where INSTR(pids,num)>0
    )
      

  3.   

    SELECT * FROM 表名 where FIND_IN_SET('11337',pids) ;
      

  4.   

    使用MYSQL函数   INSTR(字段名, 字符串)这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始)SELECT * FROM 表名 ORDER BY INSTR( pids, '11337' ) > 0 ;