表a,存储为数组 字段:id。 {4};{4、5};{4、469};{5、6、482};{5、6、7、482}.传递参数为id。想通过sql语句查询出所有id=4的数组,我用通配符like 查询 like '%id%'。结果把{5、6、482}和{5、6、7、482}也给列出来了,因为482也含有关键字4,想知道如何才能实现更精确的查询,跪求各位大侠!

解决方案 »

  1.   

    select * from table where substring(id,2,1) =4;这样试试。
      

  2.   

    select * from table where id like '_4_';
      

  3.   

    这是什么存储方式?不是枚举,不是set...
    如果你要精确,你可以:
    select * from table where id like '{4,%' or id = '{4}' or id like '%,4,%' or id like ',4}';坐等更好的想法。。
      

  4.   

    也可以用mysql正则。。select * from table where id REGEXP '[^[:digit:]]*4[^[:digit:]]*';
    正则不知道写对没.
      

  5.   

    這個問題其實不應該這麼說,這問題應該是該用什麼方法來保存來使問題變得簡單、有效。
    像上面的問題,雖然可以查詢出來,但是效率都很低。
    你可以想想其他的存儲方式來使問題變得簡單有效。
    比如你可以這樣設計表id value
    1  4
    2  4
    2  5
    3  4
    3  469
    ...
    $sql = "SELECT GROUP_CONCAT(value) FROM table WHERE value LIKE '%4%'" GROUP BY id;