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

如何检查JSON数组中指定键下是否存在给定目标值

判断JSON字段中是否存在指定邮箱条目的方法

你存储的JSON结构根节点下为user_info数组,每个数组元素包含email字段,根据你使用的场景不同,判断方式有区别,常见实现如下:

  • MySQL(5.7及以上版本支持JSON类型)
    使用JSON_CONTAINS函数直接匹配数组内的符合条件对象,语句示例:
    -- 替换成你实际的表名、JSON列名即可
    SELECT * FROM 你的表名 
    WHERE JSON_CONTAINS(你的JSON列名, '{"email":"abc@xyz.com"}', '$.user_info');
    
    语句能返回所有存在目标邮箱条目的记录,无返回结果则代表不存在对应条目。
  • PostgreSQL(推荐使用JSONB类型存储,查询性能更高)
    优先用JSONB包含运算符查询,支持走索引效率更高:
    SELECT * FROM 你的表名
    WHERE 你的JSON列名 -> 'user_info' @> '[{"email":"abc@xyz.com"}]'::jsonb;
    
    如果使用的是原生JSON类型,可以通过展开数组元素匹配:
    SELECT DISTINCT t.* FROM 你的表名 t,
    json_array_elements(t.你的JSON列名->'user_info') AS elem
    WHERE elem->>'email' = 'abc@xyz.com';
    
  • SQL Server(2016及以上版本支持JSON操作)
    用OPENJSON拆解数组后做存在性判断:
    SELECT * FROM 你的表名 t
    WHERE EXISTS (
      SELECT 1 FROM OPENJSON(t.你的JSON列名, '$.user_info')
      WITH (email NVARCHAR(100) '$.email')
      WHERE email = 'abc@xyz.com'
    );
    
  • 业务代码层判断
    如果你已经把JSON字段查询到应用层解析为对象,可以直接遍历user_info数组判断是否存在符合条件的元素,以JavaScript为例:
    // parsedJson为解析后的JSON对象
    const existTarget = parsedJson.user_info.some(member => member.email === 'abc@xyz.com')
    // existTarget 为布尔值,true代表存在对应条目
    

内容的提问来源于stack exchange,提问作者Debaleen Sengupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:24:21