如何在MySQL中简便提取嵌套JSON结构的深层字段值
MySQL提取嵌套JSON的简便方案
有两种比CTE更简便的实现方式:
- 方案1:直接使用嵌套JSON路径(最推荐)
MySQL原生支持在JSON路径表达式中直接指定多层级key,不需要拆分提取步骤,写法如下:
-- 提取结果为JSON字符串类型(保留外层双引号) SELECT my_json -> '$.outer_key.inner_key' FROM json_test; -- 提取结果为纯文本字符串(自动去除外层双引号) SELECT my_json ->> '$.outer_key.inner_key' FROM json_test;
执行结果和你通过CTE得到的结果完全一致。
- 方案2:括号包裹实现链式调用
如果你习惯PostgreSQL的链式提取写法,只需要把前一步的提取结果用括号包裹,明确运算优先级即可避免语法错误:
-- 链式提取带引号的JSON结果 SELECT (my_json -> '$.outer_key') -> '$.inner_key' FROM json_test; -- 链式提取纯文本结果 SELECT (my_json -> '$.outer_key') ->> '$.inner_key' FROM json_test;
你之前链式写法报错的原因是MySQL的运算符优先级解析逻辑,未加括号时无法正确识别前一步返回的JSON类型结果,加括号后即可正常按顺序执行提取操作。
内容的提问来源于stack exchange,提问作者yrom1
相关产品推荐
相关产品推荐

