Mysql语法批量提取json数组数据

作者:admin 发布时间:2023-12-11 16:30:48 浏览:563次

假设你有一个名为menus的表,其中有一个名为data的JSON列,包含了的JSON数组。首先,你需要将JSON数组转换为MySQL表格,可以使用JSON_TABLE将JSON数组中的菜单对象提取为行:


SELECT jt.menuName
FROM menus,
JSON_TABLE(data, '$[*]' 
        COLUMNS (
            menuName VARCHAR(50) PATH '$.menuName'
        )) AS jt;
以上语句返回的结果:



+--------------+
| menuName     |
+--------------+
| 杂粮饭       |
| 蒜苔炒鱿鱼   |
| 手撕包菜     |
| 香芹香干炒肉丝 |
+--------------+


mysql JSON_TABLE得用法


JSON_TABLE函数是MySQL中用于将JSON数据转换为关系表格的函数。它允许您从JSON对象或数组中提取数据,并将其作为查询结果返回。JSON_TABLE函数的语法如下:


JSON_TABLE(json_doc, json_path, columns_def [, wrapper_object])



参数说明:

json_doc:要进行解析的JSON数据。
json_path:指定要提取的JSON数据的路径。
columns_def:定义将提取的数据映射到结果表的列和列类型。
wrapper_object:可选参数,用于指定将结果包装在一个特定的JSON对象中。
具体使用方法如下:

提取具体字段或对象:

SELECT jt.field1, jt.field2
FROM JSON_TABLE(json_doc, '$.path.to.field'
                COLUMNS (
                    field1 INT PATH '$.field1',
                    field2 VARCHAR(50) PATH '$.field2'
                )) AS jt;
提取数组:

SELECT jt.field
FROM JSON_TABLE(json_doc, '$.path.to.array[*]'
                COLUMNS (
                    field VARCHAR(50) PATH '$'
                )) AS jt;
提取多级嵌套的字段或数组:

SELECT jt.field1, jt.field2, jt.field3
FROM JSON_TABLE(json_doc, '$.path.to.object'
                COLUMNS (
                    field1 INT PATH '$.field1',
                    field2 VARCHAR(50) PATH '$.field2',
                    field3 JSON PATH '$.field3'
                )) AS jt;
使用包装对象:

SELECT jt.field1, jt.field2
FROM JSON_TABLE(json_doc, '$.path.to.field'
                COLUMNS (
                    field1 INT PATH '$.field1',
                    field2 VARCHAR(50) PATH '$.field2'
                ), '$.wrapper') AS jt;

注意:

PATH关键字用于指定要提取的JSON字段路径。
COLUMNS关键字用于定义结果表中的列和列类型。
AS jt用于给结果表指定别名,你可以根据需要自定义别名。
请根据实际情况调整上述语法中的参数和路径,以适应自己的需求。


如需转载请保留本文出处: https://www.zhe94.com/951.html

上一篇:mysql 复制表和表数据的方法
下一篇:mysql计算用户次日/周/月留存的常用窗口函数-LEAD
MySQL-窗口函数有哪些

MySQL-窗口函数有哪些

定义 窗口可以理解为记录集合,窗口函数就是在满足某种条件的记录集合上执行的特殊函数。 即:应用在窗口内的函数。
MySQL查询连续n天登录的用户的方法

MySQL查询连续n天登录的用户的方法

这篇文章介绍了SQL查询至少连续n天登录用户的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
MySql中group_concat字符长度限制1024怎么办

MySql中group_concat字符长度限制1024怎么办

group_concat长度限制默认是1024,如果在实际使用过程中拼接好的字符串长度超过了最大长度,那么最后仅保留前1024个字符,解决group_concat长度限制有两个解决方法
mysql 怎么重启,Windows系统mysql8.0重启的方法详解

mysql 怎么重启,Windows系统mysql8.0重启的方法详解

Windows要重新启动 MySQL,你可以按照以下步骤进行操作,命令提示符界面中,输入以下命令来关闭 MySQL 服务
MySQL8.0的WITH查询实现递归遍历省市区

MySQL8.0的WITH查询实现递归遍历省市区

WITH 子句是 MySQL 中的一种 SQL 结构,又称为 Common Table Expression (CTE)。它在不影响原有 SQL 语句的情况下,允许开发人员临时创建一个内存中的结果集,然后对其进行操作。