SQLで複数のJSONを抽出し、並列に表示する方法

SQLの複数のキーJSONを抽出するには、JSON_TABLE関数が使用できます。

JSONデータを変換するJSON_TABLE関数は以下のような構文です。

JSON_TABLE(json_column, '$[*]' COLUMNS (column1 data_type PATH '$.key1', column2 data_type PATH '$.key2', ...) ) AS table_alias

JSON_カラムは複数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;

クロス結合とJSON_TABLE関数を利用して、並列のJSONオブジェクトをリレーショナルテーブルに変換し、通常のSQLクエリステートメントを使用して操作できます。上記の例では、studentsテーブルから各生徒のID、名前、年齢のプロパティを抽出しました。

bannerAds