阅读量:2
在SQL中提取多个并列JSON可以使用JSON_TABLE函数。
JSON_TABLE函数用于将JSON数据转换为关系表。它的语法如下:
JSON_TABLE(json_column, '$[*]' COLUMNS (column1 data_type PATH '$.key1', column2 data_type PATH '$.key2', ...) ) AS table_alias
其中,json_column是包含多个并列JSON的列名,'$[*]'是JSON路径表达式,表示提取所有的JSON元素。COLUMNS子句后面是列的定义,可以指定每个列的名称、数据类型以及JSON路径。
下面是一个示例,假设有一个表格students,其中包含一个名为info的JSON列,该列包含多个并列的JSON对象,每个对象都有name和age属性:
CREATE TABLE students ( id INT PRIMARY KEY, info JSON ); INSERT INTO students (id, info) VALUES (1, '[{"name": "Alice", "age": 20}, {"name": "Bob", "age": 21}, {"name": "Charlie", "age": 22}]'); SELECT s.id, jt.name, jt.age FROM students s CROSS JOIN JSON_TABLE(s.info, '$[*]' COLUMNS ( name VARCHAR(50) PATH '$.name', age INT PATH '$.age' )) AS jt;
通过CROSS JOIN和JSON_TABLE函数,我们可以将每个并列的JSON对象转换为关系表格,然后使用普通的SQL查询语句进行操作。在上面的示例中,我们从students表中提取了每个学生的id、name和age属性。