select * from Productselect * from Product
where ',' + classidlike '%;3;%'

解决方案 »

  1.   

    select * from Product
    where ',' + classid like '%;3;%'忘记了空格,下面也可以select * from Product
    WHERE (CHARINDEX(';3;', ';' + classid + ';') > 0)
      

  2.   

    where classid = '3' or classid like ';3;%'
    or classid like '3;%'
      

  3.   

    数字两边都加上";",然后用charindex
      

  4.   

    数字两边都加上";",然后用charindexwhere charindex(';3;',classid)>0
      

  5.   

    select * from Product
    WHERE (CHARINDEX(';3;', ';' + classid + ';') > 0)
    查询出类别为1的下面的所有的子类的产品.
    看不懂-_-#!不知道这两个表什么关系...
      

  6.   

    第一个问题:是的,楼主你的要求已经不能用select.....like...的方式来实现了,我建议你先把表Product数据读出来放到一个DataTable中(dt1),逐条比较
    foreach(DataRow dr in dt1.Rows)
    {
      string classid_str=dr["classid"].ToString();//读取
      string[] classid_array=classid_str.Split(';');//按“;”分拆成数组
      
     foreach(string temp in classid_array)
    {
       if(temp=="3")
       {
          //该DataRow包含“3”,符合要求
       }
    }
    }第二个问题:出类别为1的下面的所有的子类的产品.
    这需要用递归的方法
    private static DataTable dt1;//定义一静态DataTable用以存放查询结果private void Start()
    {
      string sqlString="select * from class";//
      dt1=......;//把class表全部读出放在dt1中  string firstNode="1";
      GetChildrenNode(firstNode);//开始调用递归方法查找1下的子类
    }private void GetChildrenNode(string FatherNode)
    {
      DataRow[] dr_array=dt1.Select("parentid='"+FatherNode+"'");
    //获得父节点为FatherNode的行
      foreach(DataRow dr in dr_array)
      {
        GetChildrenNode(dr["classid "].ToString());//获取该行的子类
      }
    }代码不完整,只希望能给楼主一些思路
      

  7.   

    where classid = '3' or classid like ';3;%'
    or classid like '3;%'
      

  8.   

    ID  classid
    1   ;3;
    2   ;3;4;
    3   ;5;6;3;
    4   ;5;3;6;
    5   ;33;34;5;
    6   ;30;33;3;保存classid的时候在前后都加“;”查询:
    select * from Product
    where classid like '%;3;%'
      

  9.   

    where classid = '3' or classid like ';3;%'
    or classid like '3;%'
    这个会把33;的也查出来