我在数据库字段名称'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;
}
}
}
}
提前感谢。
答案 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;
注意:强>
在列中存储以逗号分隔的列表几乎一直在寻找麻烦。请考虑规范化您的数据库。