我创建了一个字段"数组"在mysql DB上,遵循此响应:Link
当持久存储数据时:
{i:0;s:4:"3410";i:1;s:4:"3415";i:2;s:4:"3459";i:3;s:4:"3460";i:4;s:4:"3492";}
但是在sql查询中找不到,我尝试了一些东西,但我仍然无法得到它
SELECT *
FROM classified_zones cz
WHERE cz.locations_ids IN ( 3492 )
答案 0 :(得分:3)
您可以动态构建类似于以下内容的学说查询:
$qb->select('cz')
->from('myBundle:ClassifiedZones', 'cz')
->where('cz.locationsIds LIKE :id')
->setParameter('id', '%:'.strlen($id).':"' . $id . '"%' );
最终的sql查询应该类似于Łukasz的回复。
答案 1 :(得分:1)
以下查询应该有效:
SELECT *
FROM classified_zones cz
WHERE cz.locations_ids LIKE '%s:4:"3492";%'
答案 2 :(得分:1)
不要使用“不熟悉的格式”,MySQL支持本机JSON数据类型。
请参阅:https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#function_json-contains
例如:
locations_ids =“[1,2,3,3492]”
SELECT cz.* FROM classified_zones cz WHERE JSON_CONTAINS(cz.locations_ids, 3492)