假设你有一个名为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