我在数据库中存储一个数组,假设为
(4,3,24,7,13,32)在页面我POST得到一个数目3,想寻找和这个3相同的数字,存在为1,不存在为0。比如这个例子,就存在一个3。
这样的如何写SQL呢。
分少了点。

解决方案 »

  1.   

    SELECT * FROM tablename WHERE field REGEXP "[[:<:]]3[[:>:]]"
      

  2.   

    select * from table where field like '%3%'
      

  3.   

    SELECT * FROM 表名 WHERE 表项=%3%
      

  4.   

    select * from tbl_name where SELECT FIND_IN_SET('3', field_name)
      

  5.   

    你应该先说明一下你的这个字段是什么类型的?varchar?set?
      

  6.   

    菜鸟也说2点思路,
    1,如果数据类型为set,那么就用5楼的方法
    2,如果数据类型为其他,那么就先获取数据库的记录,然后将得到的3和记录中获取到的数组做比对
      

  7.   


    <?php// 数组
    $g_ArrDb = Array( 4, 3, 24, 7, 13, 32 );// 1, 序列化之后保存到数据库,结果是:
    // "a:6:{i:0;i:4;i:1;i:3;i:2;i:24;i:3;i:7;i:4;i:13;i:5;i:32;}"
    // 根据分析这种存储方式不变查找,因为 i:3 你不知道是数组的索引还是值
    // 所以放弃这种存储办法
    $g_sDbStr = serialize( $g_ArrDb );// 2, 字符串拼接
    // 存储的字符串类似:",4,3,24,7,13,32,"
    // 注意:整个字符串的前后都有分割字符 ","
    // 这样就很好找了
    $sql = "SELECT * FROM TABLE_NAME WHERE SOMEFIELD LIKE '%,3,%'";//
    // 这样存储与查找就搞定,我经常这么用
    //
    ?>
      

  8.   

    SELECT * FROM TABLE_NAME WHERE SOMEFIELD LIKE '%,3,%'