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

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

假设你有一个名为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://zhe94.com/951.html

上一篇:mysql 复制表和表数据的方法
下一篇:mysql计算用户次日/周/月留存的常用窗口函数-LEAD
Mysql语法批量提取json数组数据

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

假设你有一个名为menus的表,其中有一个名为data的JSON列,包含了的JSON数组。首先,你需要将JSON数组转换为MySQL表格,可以使用JSON_TABLE将JSON数组中的菜单对象提取为行:
mysql计算用户次日/周/月留存的常用窗口函数-LEAD

mysql计算用户次日/周/月留存的常用窗口函数-LEAD

在MySQL中,你可以使用窗口函数(Window Function)来访问同一结果集中的当前行和下一行的数据。窗口函数在查询的SELECT语句中使用,并且通过窗口规范(Window specification)来定义要计算的窗口范围。
python create_engine 连接数据库密码里面含有@字符怎么办

python create_engine 连接数据库密码里面含有@字符怎么办

如果数据库连接密码中含有特殊字符如@,可以使用以下方法来连接数据库