表C_file,其中有个字段是spile,他存的是字符形式,例如:1,2,10,11
 
C_fileID     spile
1      2,10,11
2      2,3,20,22
3      1,6,8
4      5,6,1,9 
SQL:   select * from C_file where spile LIKE '%1%'
如果这样查询的话,会查询出ID为1、3、4,但正确的应该是3、4那么这个SQL语句应该怎么写才正确的查询出1

解决方案 »

  1.   

    select *
    from C_file
    where find_in_set(1,spile)
      

  2.   


    mysql> select * from test;
    +----+-----------+
    | id | name      |
    +----+-----------+
    |  1 | a,1,2     |
    |  2 | 2,3,20,30 |
    |  3 | 1,6,8     |
    |  4 | 5,6,1,9   |
    |  5 | e         |
    +----+-----------+
    5 rows in set (0.00 sec)mysql> select *from test where instr(concat(',',name,','),',1,')<>0;
    +----+---------+
    | id | name    |
    +----+---------+
    |  1 | a,1,2   |
    |  3 | 1,6,8   |
    |  4 | 5,6,1,9 |
    +----+---------+
    3 rows in set (0.00 sec)mysql>