在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屬性。