You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询含对象数组字段的SQL表?WHERE条件写法求教

查询存储对象数组的字段中满足条件的数据

这完全可行,但不能用你尝试的那种写法——你写的table_1.a是直接访问表的列,而不是数组里对象的字段,得根据你使用的数据库,用对应的JSON数组查询语法:

不同数据库的写法示例

假设存储对象数组的字段名叫json_array_col,要筛选数组内存在a字段等于"test"的记录:

MySQL 5.7+ / MariaDB

用JSON_CONTAINS函数直接匹配数组内的对象:

SELECT * FROM table_1 
WHERE JSON_CONTAINS(json_array_col, '{"a": "test"}');

或者用JSON_SEARCH定位是否存在目标值:

SELECT * FROM table_1 
WHERE JSON_SEARCH(json_array_col, 'one', 'test', NULL, '$[*].a') IS NOT NULL;

PostgreSQL

如果字段是jsonb类型,两种常用写法:

  1. 展开数组后筛选(适合复杂条件):
SELECT DISTINCT table_1.* FROM table_1
JOIN LATERAL jsonb_array_elements(table_1.json_array_col) AS elem
ON elem->>'a' = 'test';
  1. 用@>包含操作符快速匹配:
SELECT * FROM table_1
WHERE json_array_col @> '[{"a": "test"}]'::jsonb;

MongoDB

直接通过内嵌数组的字段路径查询:

db.table_1.find({ "json_array_col.a": "test" })

内容的提问来源于stack exchange,提问作者Gelo Chang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:35:18