mysql查询从数据库字段中搜索逗号分隔的字符串数据

时间:2014-07-31 08:06:54

标签: mysql sql arrays

我在数据库字段名称'status'中有逗号分隔的字符串数据,例如:(“2,5,6,9,16”),我必须搜索其状态正好为'6'。

我这样做。

   $offers = DB::query("select id,status from table  WHERE (status LIKE '%6%')")->execute()->as_array();
        $countOffer = 0;
        if($offers){
        foreach ($offers as $offer){
            $checks= explode(',',$offer['status']);
            foreach($checks as $check){
              if($check == '6'){
                $countOffer = $countOffer+1;  
              }  
            }
        }
        }

提前感谢。

2 个答案:

答案 0 :(得分:1)

这可以帮到你:

select id,status from table  WHERE (',' || status || ',' LIKE '%,6,%');

另一种选择是:

 SELECT  STATUS FROM TABLE WHERE 
 (    STATUS LIKE '%,6,%'  
   OR STATUS LIKE '%,6' 
   OR STATUS LIKE '6,%' 
   OR STATUS='6');

我会亲自推荐第一个选项!

答案 1 :(得分:0)

此类查询的常用方法是使用FIND_IN_SET

select id, status from table  WHERE FIND_IN_SET('6',status) > 0;

注意:

在列中存储以逗号分隔的列表几乎一直在寻找麻烦。请考虑规范化您的数据库。