GET_JSON_DOUBLE
説明
この関数は、JSONドキュメントからフィールドの値を抽出し、DOUBLE型に変換するために使用されます。この関数は、指定されたパス上のフィールドの値を返すか、値をDOUBLE型に変換できない場合またはパスが指すフィールドが存在しない場合にNULLを返します。
構文
GET_JSON_DOUBLE( <json_str>, <json_path>)
必須パラメータ
| parameters | described |
|---|---|
<json_str> | データを抽出するJSONストリングが必要です。 |
<json_path> | JSONパス、フィールドの場所を指定します。パスはドット記法で表すことができます。 |
戻り値
- パスが指すフィールドのDOUBLE値を返します。
- 指定されたパスに対応するフィールドが見つからない場合、またはフィールドの値をDOUBLE型に変換できない場合はNULLを返します。
使用上の注意
jsonストリング内の指定されたパスの浮動小数点コンテンツを解析し、取得します。
<json_path>は$記号で開始し、. をパス分割子として使用する必要があります。パスに. が含まれる場合は、ダブルクォートで囲むことができます。
[ ]を使用して配列のインデックスを表し、0から開始します。
pathの内容には"、[、]を含めることはできません。
<json_str>が不正な形式の場合、またはjson_pathが不正な形式の場合、またはマッチが見つからない場合はNULLを返します。
さらに、同じ機能を実現するにはjsonb型とjsonb_extract_XXX関数の使用を推奨します。
特殊な状況は以下のように処理されます:
- json_pathで指定されたフィールドがJSONに存在しない場合はNULLを返します
- JSONでjson_pathによって指定されたフィールドの実際の型がjson_extract_tによって指定された型と一致しない場合、指定された型に無損失で変換できる場合は指定された型tを返し、変換できない場合はNULLを返します。
例
- "k1"をキーとする値を取得
SELECT get_json_double('{"k1":1.3, "k2":"2"}', "$.k1");
+-------------------------------------------------+
| get_json_double('{"k1":1.3, "k2":"2"}', '$.k1') |
+-------------------------------------------------+
| 1.3 |
+-------------------------------------------------+
- キー"my.key"を持つ配列の2番目の要素を取得します
SELECT get_json_double('{"k1":"v1", "my.key":[1.1, 2.2, 3.3]}', '$. "my.key"[1]');
+---------------------------------------------------------------------------+
| get_json_double('{"k1":"v1", "my.key":[1.1, 2.2, 3.3]}', '$."my.key"[1]') |
+---------------------------------------------------------------------------+
| 2.2 |
+---------------------------------------------------------------------------+
- セカンダリパス k1.key -> k2 を持つ配列の最初の要素を取得します
SELECT get_json_double('{"k1.key":{"k2":[1.1, 2.2]}}', '$."k1.key".k2[0]');
+---------------------------------------------------------------------+
| get_json_double('{"k1.key":{"k2":[1.1, 2.2]}}', '$."k1.key".k2[0]') |
+---------------------------------------------------------------------+
| 1.1 |
+---------------------------------------------------------------------+