首页/数据/SQL 速查/JSON_EXTRACT 提取 JSON 值
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

JSON_EXTRACT 提取 JSON 值

从 JSON 文档里按键或下标取值:MySQL 有 JSON_EXTRACT 函数与 -> / ->> 运算符;PostgreSQL 用 jsonb 运算符或 jsonpath。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT JSON_EXTRACT(doc, '$.user.name') FROM events;
SELECT doc->'$.user.name'  FROM events;   -- 返回 JSON(字符串带引号)
SELECT doc->>'$.user.name' FROM events;   -- 返回文本(去引号)

PostgreSQL

PostgreSQL
SELECT doc->'user'->>'name' FROM events;          -- jsonb -> 文本
SELECT doc#>>'{user,name}' FROM events;           -- 路径数组取文本
SELECT jsonb_path_query_first(doc, '$.user.name') FROM events;  -- PG 12+
MySQLJSON_EXTRACT(doc, path);-> 返回 JSON 值、->> 返回文本
PostgreSQL-> 取键/下标返回 jsonb;->> 返回 text;#> / #>> 走路径数组
路径不存在返回 NULL(不是报错)

易错点

  • 用 -> 取出的字符串带 JSON 引号('"paid"'),与 'paid' 比较要用 ->> 或先 JSON_UNQUOTE
  • 深层路径拼写错误不会报错,只返回 NULL,数据排查时先 SELECT 出中间层确认结构

数据来源与参考

  • MySQL 8.0 Reference Manual · JSON Functions
  • PostgreSQL Documentation · JSON Functions and Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌