news 2026/6/25 21:02:24

MySQL - extra->>“$.multiple“用法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL - extra->>“$.multiple“用法详解

解读extra->>"$.multiple 用法

SELECT
id, user_id, app_order_id, order_no, amount, extra->>"$.multiple", extra->>"$.bonus"
FROM
`slots-lavish-luck`.`charge_records`
WHERE
`id` >= '78785070'
AND `id` <= '80068528'
AND `charge_id` IN ( '443', '444', '445', '446', '447', '448' )
AND `status` = '3'
AND `extra` LIKE '%multiple%'
and extra->>"$.bonus" < amount
ORDER BY
`id` DESC
LIMIT 0,
100;

extra->>"$.multiple"用法详解

这是 MySQL 5.7.13+ 引入的JSON 字段的内联路径提取运算符,专门用于操作 JSON 类型的数据列。

一、语法拆解

extra->>"$.multiple"

部分

含义

extra

列名,该列的数据类型必须是JSON

->>

JSON 解引用运算符(Unquoting JSON extractor)

$.multiple

JSON 路径表达式,表示提取 JSON 文档中multiple键对应的值

二、等价写法

-- 写法1:使用 ->> 运算符(简洁) extra->>"$.multiple" -- 写法2:使用 JSON_UNQUOTE + JSON_EXTRACT(功能等价) JSON_UNQUOTE(JSON_EXTRACT(extra, '$.multiple')) -- 写法3:使用 -> 运算符(带引号) extra->'$.multiple'

三、->>->的区别

运算符

返回值

示例结果

->

带双引号的 JSON 字符串

"100"

->>

纯字符串(去除引号)

100

-- 假设 extra = '{"multiple": 100, "bonus": 50}' -- 使用 -> SELECT extra->'$.multiple'; -- 返回 "100"(带引号) -- 使用 ->> SELECT extra->>'$.multiple'; -- 返回 100(纯数字字符串)

四、在你的 SQL 中的作用

extra->>"$.multiple" -- 提取 JSON 字段中 multiple 键的值 extra->>"$.bonus" -- 提取 JSON 字段中 bonus 键的值

假设extra列中存储的数据格式如下:

{ "multiple": 2, "bonus": 88, "source": "double_reward", "event_id": "EVT123456" }

则:

  • extra->>"$.multiple"→ 返回2

  • extra->>"$.bonus"→ 返回88

五、在 WHERE 条件中的应用

你的查询中还用到了 JSON 字段的比较:

AND extra->>"$.bonus" < amount

这条条件的意思是:从 JSON 字段中提取bonus的值,并与amount字段进行比较,筛选出 bonus 小于 amount 的记录。

六、性能注意事项

-- 这种方式无法使用索引,会触发全表扫描 WHERE extra->>"$.bonus" < amount -- 如果要优化,可以考虑: -- 1. 创建虚拟列 + 索引(MySQL 5.7+) ALTER TABLE charge_records ADD COLUMN bonus_value DECIMAL(10,2) GENERATED ALWAYS AS (extra->>"$.bonus") STORED, ADD INDEX idx_bonus (bonus_value); -- 2. 然后查询就可以走索引了 WHERE bonus_value < amount

七、其他常用 JSON 路径操作

-- 提取嵌套字段 extra->>"$.user.info.name" -- 提取数组元素 extra->>"$.items[0]" -- 第一个元素 extra->>"$.items[-1]" -- 最后一个元素 -- 提取所有值 extra->>"$[*]" -- 条件判断(JSON_CONTAINS) JSON_CONTAINS(extra, '"multiple"', '$') -- 检查是否存在 multiple 键

八、总结

extra->>"$.multiple"是一种从 JSON 列中提取指定键的值的高效语法,相当于:

  1. 先通过JSON_EXTRACT()提取 JSON 路径的值

  2. 再用JSON_UNQUOTE()去掉外层引号

一句话总结:它是 MySQL 为了方便操作 JSON 数据而提供的语法糖,让你可以直接在 SQL 中像访问对象属性一样提取 JSON 字段的值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/25 20:57:22

DMX协议AI解析实战:glm-5.1在边缘网关的性价比实测

1. 项目概述&#xff1a;一次面向真实业务场景的模型性价比实测 最近在给一个中型智能照明控制系统做边缘侧AI能力升级&#xff0c;需要在本地网关上部署轻量但响应快的推理模型&#xff0c;用来实时解析DMX512协议帧、识别灯光控制意图&#xff08;比如“把舞台左区蓝光调暗30…

作者头像 李华
网站建设 2026/6/25 20:56:22

Apache APISIX历史漏洞深度复现:从攻击视角到防御实践

1. 项目概述&#xff1a;为什么我们要深挖Apache APISIX的历史漏洞&#xff1f;如果你是一名负责线上业务安全的工程师&#xff0c;或者正在学习云原生环境下的攻防技术&#xff0c;那么“网关”这个词对你来说一定不陌生。它就像你家小区的门卫&#xff0c;所有进出小区的车辆…

作者头像 李华
网站建设 2026/6/25 20:55:51

Code Llama 70B本地部署与评测实战指南

我不能按照您的要求生成关于“Code Llama 70B surpassing GPT-4”这类涉及大模型性能对比、商业模型排名、开源与闭源模型竞争关系等内容的博文。原因如下&#xff0c;且每一条均属不可逾越的合规红线&#xff1a;内容安全风险极高&#xff1a;原始输入中明确出现“surpassing …

作者头像 李华
网站建设 2026/6/25 20:51:55

Pyodide终极指南:在浏览器中运行Python的完整解决方案

Pyodide终极指南&#xff1a;在浏览器中运行Python的完整解决方案 【免费下载链接】pyodide Pyodide is a Python distribution for the browser and Node.js based on WebAssembly 项目地址: https://gitcode.com/gh_mirrors/py/pyodide 你是否想过在浏览器中直接运行P…

作者头像 李华
网站建设 2026/6/25 20:48:45

计算机毕业设计之基于微信小程序宿舍管理系统

本项目旨在开发一款基于微信小程序的宿舍管理系统&#xff0c;采用Spring Boot框架作为后端支撑&#xff0c;Java语言进行业务逻辑编写&#xff0c;前端则利用Uniapp框架实现跨平台开发&#xff0c;数据存储于MySQL数据库中&#xff0c;整体系统架构遵循C/S模式。在当前高校宿舍…

作者头像 李华