メインコンテンツまでスキップ
バージョン: 4.x

GET_JSON_STRING

デスクリプション

この関数は、JSONドキュメントからフィールドの値を抽出し、STRING型に変換するために使用されます。指定されたパスにあるフィールド値を返します。値が文字列に変換できない場合、または指定されたパスにフィールドが存在しない場合は、NULLを返します。

Syntax

GET_JSON_STRING( <json_str>, <json_path>)

必須パラメータ

パラメータ説明
<json_str>データを抽出する必要があるJSON文字列。
<json_path>フィールドの位置を指定するJSONパス。パスはドット記法を使用できます。

戻り値

指定されたパスのフィールドのSTRING値を返します。 指定されたパスが有効なフィールドを指していない場合、またはフィールド値をSTRING型に変換できない場合は、NULLを返します。

使用上の注意

JSON文字列内の指定されたパスの文字列コンテンツを解析して取得します。 <json_path>$記号で始まり、パス区切り文字として.を使用する必要があります。パスに.が含まれる場合は、二重引用符で囲む必要があります。 配列インデックスを示すために[ ]を使用し、0から開始します。 パスには", [、および]を含めるべきではありません。 <json_str>の形式が正しくない場合、または<json_path>の形式が無効な場合、または一致するフィールドが見つからない場合は、NULLが返されます。

さらに、同じ機能を実現するためにjsonb型とjsonb_extract_XXX関数の使用を推奨します。

特別なケースの処理は以下の通りです:

  • <json_path>で指定されたフィールドがJSONに存在しない場合は、NULLを返します。
  • <json_path>で指定されたフィールドの実際の型がjson_extract_tで期待される型と異なる場合、期待される型に無損失で変換できる場合は指定された型を返します。そうでなければ、NULLを返します。

  1. キー"k1"の値を取得

SELECT get_json_string('{"k1":"v1", "k2":"v2"}', "$.k1");
+---------------------------------------------------+
| get_json_string('{"k1":"v1", "k2":"v2"}', '$.k1') |
+---------------------------------------------------+
| v1 |
+---------------------------------------------------+
  1. キー "my.key" の配列の2番目の要素を取得する
SELECT get_json_string('{"k1":"v1", "my.key":["e1", "e2", "e3"]}', '$."my.key"[1]');

+------------------------------------------------------------------------------+
| get_json_string('{"k1":"v1", "my.key":["e1", "e2", "e3"]}', '$."my.key"[1]') |
+------------------------------------------------------------------------------+
| e2 |
+------------------------------------------------------------------------------+

  1. セカンダリパス k1.key -> k2 における配列の最初の要素を取得する
 SELECT get_json_string('{"k1.key":{"k2":["v1", "v2"]}}', '$."k1.key".k2[0]');


+-----------------------------------------------------------------------+
| get_json_string('{"k1.key":{"k2":["v1", "v2"]}}', '$."k1.key".k2[0]') |
+-----------------------------------------------------------------------+
| v1 |
+-----------------------------------------------------------------------+