现在某个表(testid)中三条数据,其中的一个字段为idpath 它的值有:2|21|3  ;   3|1|9   ;  11|8|6  ;
现在想把 idpath 中含 1 的那条数据给查出来(如 第二条数据;这仅仅是举个例子),
又不能用像 select * from testid where idpath like '%1%' 这样的SQL 语句,
这样一用的话,那三条数据肯定都被查出来了,所以,请问大家,有什么好的办法,来写这条语句?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【Jhandsome】截止到2008-07-07 14:22:22的历史汇总数据(不包括此帖):
    发帖的总数量:16                       发帖的总分数:630                      
    结贴的总数量:14                       结贴的总分数:520                      
    无满意结贴数:1                        无满意结贴分:30                       
    未结的帖子数:2                        未结的总分数:110                      
    结贴的百分比:87.50 %               结分的百分比:82.54 %                  
    无满意结贴率:7.14  %               无满意结分率:5.77  %                  
    楼主加油
      

  2.   

    select * from testid where idpath like '%|1|%' 
      

  3.   

    select * from testid where idpath like '% ¦1 ¦%' 
    union all
    select * from testid where idpath like '% ¦1 ' 
    union all
    select * from testid where idpath like '1 ¦%' 
      

  4.   

    LS 的意思也就是一次性用个三个 like ,这样会不会很影响速度啊,有没有更好的办法呢 ?
      

  5.   

    1.select * from testid where idpath like '% ¦1 ¦%' 
    union all 
    select * from testid where idpath like '% ¦1 ' 
    union all 
    select * from testid where idpath like '1 ¦%' 
    2.select * from testid where idpath like '% ¦1 ¦%' or idpath like '% ¦1 ' or idpath like '1 ¦%'
    前一个比后一个性能好点
    mysql里可以使用正则表达式查询
    select * from testid where idpath REGEXP '(^1[|])|([|]1[|])|([|]1$)'
      

  6.   

    SELECT * FROM testid WHERE idpath LIKE '1|%' OR idpath LIKE '%|1|%' OR idpath LIKE '%|1';
      

  7.   

    SELECT * FROM testid WHERE idpath LIKE '1|%' OR idpath LIKE '%|1|%' OR idpath LIKE '%|1';