首页/数据/数据库速查/JSON 函数:JSON_EXTRACT / ->> / JSON_SET
本包目录(495 条)
MySQL 基础与连接36 条
SQL 语法52 条
用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条Redis 运维与场景124 条

JSON 函数:JSON_EXTRACT / ->> / JSON_SET

MySQL 5.7+ 原生 JSON 类型与函数:路径提取、更新、数组遍历;高频查询的 JSON 字段可建生成列索引。

数据库速查数据更新于 2026-10-12
用途JSON 读写
常用JSON_EXTRACT() -> ->> JSON_SET() JSON_UNQUOTE() JSON_TABLE()
类型JSON 列校验 + 高效存储

常用示例

常用示例
SELECT JSON_EXTRACT(attrs, '$.color') FROM products;
SELECT attrs->>'$.color' AS color FROM products;      -- 去引号提取
UPDATE products SET attrs = JSON_SET(attrs, '$.stock', 10) WHERE id = 1;
SELECT id FROM products WHERE attrs->>'$.color' = 'red';

生成列 + 索引加速

生成列 + 索引加速
ALTER TABLE products
  ADD COLUMN color VARCHAR(32) GENERATED ALWAYS AS (attrs->>'$.color') STORED,
  ADD INDEX idx_color (color);
直接对 JSON 表达式过滤走不了索引,用 STORED 生成列 + 索引是官方推荐做法。

易错点

  • -> 返回带引号的 JSON 值,->> 返回无引号文本,比较字符串时要选对
  • JSON 列不能直接建索引,只能通过生成列或函数索引实现

数据来源与参考

  • MySQL 8.0 Reference Manual: JSON Functions

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌