在数组类型字段和mysql中查找

w3nuxt5m  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(517)

我在mysql数据库上创建了一个字段“array”,响应如下: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 )
qlzsbp2j

qlzsbp2j1#

您可以动态构建一个条令查询,类似于:

$qb->select('cz')
   ->from('myBundle:ClassifiedZones', 'cz')
   ->where('cz.locationsIds LIKE :id')
   ->setParameter('id', '%:'.strlen($id).':"' . $id . '"%' );

最后的sql查询应该类似于ł乌卡斯的回应。

f87krz0w

f87krz0w2#

不要使用“不熟悉的格式”,mysql支持原生json数据类型。
请参见:https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#function_json-包含
例如:
位置\u id=“[1,2,33492]”

SELECT cz.* FROM classified_zones cz WHERE JSON_CONTAINS(cz.locations_ids, 3492)
zy1mlcev

zy1mlcev3#

以下查询应该有效:

SELECT *
FROM classified_zones cz
WHERE cz.locations_ids LIKE '%s:4:"3492";%'

相关问题