如何在MySQL中提取数字键嵌套JSON字段的值?
解决MySQL JSON字段纯数字键的提取问题
这个问题出在MySQL的JSON路径语法规则上——纯数字类型的对象键必须用双引号包裹,不然解析器会把它误判为数组索引,进而抛出语法错误。
正确的查询写法
你可以通过两种方式修正查询:
- 使用
->运算符时,给数字键加上双引号(注意整个路径要用单引号包裹,避免符号冲突):select sent->'$.data."12"' from mytable; - 或者使用
JSON_EXTRACT()函数,逻辑和上面一致:select JSON_EXTRACT(sent, '$.data."12"') from mytable;
额外小技巧:获取无引号的结果
如果希望直接得到不带JSON字符串引号的纯文本值,可以用->>运算符(这是JSON_UNQUOTE(JSON_EXTRACT(...))的简写形式):
select sent->>'$.data."12"' from mytable;
这样就能顺利提取data对象下键为12对应的值了,之前的报错就是因为没给数字键加双引号,导致JSON路径解析失败。
内容的提问来源于stack exchange,提问作者Ibrahim Lawal
相关产品推荐
相关产品推荐

