MySQLでは、JSON_KEYS()
関数は、JSONオブジェクトの最上位の値からキーを返します。キーはJSON配列として返されるか、path
の場合は返されます 引数が与えられ、選択されたパスの最上位のキー。
関数の引数としてJSONドキュメントを提供します。
(オプションで)2番目の引数を指定して、JSONドキュメント内の「トップレベル」パスの開始位置を指定することもできます。
構文
構文は次のようになります:
JSON_KEYS(json_doc[, path])
json_doc
の場所 JSONドキュメントとpath
JSONドキュメント内の「トップレベル」パスがどこから始まるかを決定するためのオプションの引数です。
選択したオブジェクトが空の場合、結果の配列は空になります。トップレベルの値にネストされたサブオブジェクトがある場合、戻り値にはそれらのサブオブジェクトからのキーは含まれません。
例1-基本的な使用法
実例を示します。
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}') AS 'Result';
結果:
+-----------------+ | Result | +-----------------+ | ["a", "b", "c"] | +-----------------+
別の例を次に示します。
SELECT JSON_KEYS('{"Name": "Bart", "Age": 10}') AS 'Result';
結果:
+-----------------+ | Result | +-----------------+ | ["Age", "Name"] | +-----------------+
例2–パスを指定する
パスを指定する例を次に示します。これにより、(JSONドキュメント全体の最上位オブジェクトだけに限定されるのではなく)ネストされたオブジェクトからキーを取得できます。
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.c') AS 'Result';
結果:
+-----------------+ | Result | +-----------------+ | ["d", "e", "f"] | +-----------------+
例3–存在しないパス
存在しないパスを指定すると、NULL値が返されます。
SELECT JSON_KEYS('{"a": 1, "b": 2, "c": {"d": 3, "e": 4, "f": 5}}', '$.z') AS 'Result';
結果:
+--------+ | Result | +--------+ | NULL | +--------+
引数のいずれかがNULL
の場合も、NULL値を取得します または、最初の引数がJSONオブジェクトでない場合。
例4–アレイ
配列はオブジェクトではなく、キーと値のペアは含まれていません。したがって、配列からキーを返そうとすると、NULL値が返されます。
SELECT JSON_KEYS('[1, 2, 3]') AS 'Result';
結果:
+--------+ | Result | +--------+ | NULL | +--------+
ただし、配列の要素のいずれかにオブジェクトが含まれている場合でも、path
を使用できます。 そのオブジェクトからキーを取得するための引数。
SELECT JSON_KEYS('[1, 2, {"a": 1, "b": 2}]', '$[2]') AS 'Result';
結果:
+------------+ | Result | +------------+ | ["a", "b"] | +------------+
例5–空のオブジェクト
選択したオブジェクトが空の場合、空の配列が取得されます。
SELECT JSON_KEYS('{}') AS 'Result';
結果:
+--------+ | Result | +--------+ | [] | +--------+