json_each
Description
JSON オブジェクトの最も外側の要素を 2 つの列に保持されたキーと値のペアのセットに展開し、各要素ごとに 1 行からなるテーブルを返します。
Syntax
json_each(json_object_expr)
Parameters
json_object_expr
: JSON オブジェクトを表す式です。オブジェクトは JSON 列、または PARSE_JSON などの JSON コンストラクタ関数によって生成された JSON オブジェクトであることができます。
Return value
2 つの列を返します。1 つは key という名前で、もう 1 つは value という名前です。key 列は VARCHAR 値を格納し、value 列は JSON 値を格納します。
Usage notes
json_each 関数はテーブル関数であり、テーブルを返します。返されたテーブルは複数の行からなる結果セットです。そのため、返されたテーブルを元のテーブルにジョインするために FROM 句でラテラル ジョインを使用する必要があります。ラテラル ジョインは必須ですが、LATERAL キーワードはオプションです。json_each 関数は SELECT 句で使用することはできません。
Examples
-- tj という名前のテーブルを例として使用します。tj テーブルでは、j 列が JSON オブジェクトです。
mysql> SELECT * FROM tj;
+------+------------------+
| id | j |
+------+------------------+
| 1 | {"a": 1, "b": 2} |
| 3 | {"a": 3} |
+------+------------------+
-- tj テーブルの j 列をキーと値で 2 つの列に展開し、複数の行からなる結果セットを取得します。この例では、LATERAL キーワードを使用して結果セットを tj テーブルにジョインしています。
mysql> SELECT * FROM tj, LATERAL json_each(j);
+------+------------------+------+-------+
| id | j | key | value |
+------+------------------+------+-------+
| 1 | {"a": 1, "b": 2} | a | 1 |
| 1 | {"a": 1, "b": 2} | b | 2 |
| 3 | {"a": 3} | a | 3 |
+------+------------------+------+-------+