MYSQL -- 根据JSON列将一行拆为多行
短信预约 -IT技能 免费直播动态提醒
使用JSON_TABLE
例如表中存在 json 字段 json_filed
我们要实现如下效果
可以使用 json_table 去实现,json_table 可以将 json 字段转换为 table 去使用
SELECT json_field,j.json_single_value FROM `user`left join json_table(json_field, '$[*]' columns (json_single_value int path '$')) as j on true
查询结果如下,由一行分割成多行
Incorrect arguments to JSON_TABLE
有些时候我们会用到子查询,如下
SELECT a.json_field,j.json_single_value FROM ( select * from `user` where 1=1) as aleft join json_table(a.json_field, '$[*]' columns (json_single_value int path '$')) as j on true
我们需要先对目标表进行筛选,用来节省占用内存,并提高查询效率,然后再将其 json 字段转换为 table
但是当我们运行上面的 SQL 时会爆出 Incorrect arguments to JSON_TABLE 的错误。
原因是我们子查询中的 json_field 字段格式有问题,需要我们强制转换一下
SELECT a.json_field,j.json_single_value FROM ( select * from `user` where 1=1) as aleft join json_table(CAST(a.json_field AS JSON), '$[*]' columns (json_single_value int path '$')) as j on true
来源地址:https://blog.csdn.net/qq_40096897/article/details/130288773
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341