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

MySQL 8中如何在普通字段与JSON提取字段中搜索指定值?

问题修复方案

问题出在JSON_EXTRACT的返回值格式上:它返回的是带双引号的JSON格式字符串(例如"Elephant"),而普通字段customerNumber存储的是不带引号的纯字符串Elephant。当你用'Elephant'在IN条件中同时匹配这两类值时,带引号的JSON字符串无法和目标值匹配,导致查询无结果。

你可以通过以下两种方式修复:

方法1:用JSON_UNQUOTE去除JSON字符串的引号

SELECT
    *
FROM
    tasks
WHERE
    'Elephant' IN(customerNumber, JSON_UNQUOTE(JSON_EXTRACT(outputFields, '$.action')), JSON_UNQUOTE(JSON_EXTRACT(outputFields, '$.animals')))

方法2:使用简写运算符->>(推荐)

->>是JSON_UNQUOTE(JSON_EXTRACT())的简写,能直接返回不带引号的字符串,代码更简洁:

SELECT
    *
FROM
    tasks
WHERE
    'Elephant' IN(customerNumber, outputFields->>'$.action', outputFields->>'$.animals')

修改后,JSON提取的结果会和普通字段的字符串格式保持一致,IN条件就能正确匹配所有包含Elephant的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:15:31