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

GET_JSON_DOUBLE

デスクリプション

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

Syntax

GET_JSON_DOUBLE( <json_str>, <json_path>)

Required パラメータ

parametersdescribed
<json_str>データを抽出するJSONフィールドが必要です。
<json_path>JSONパス、フィールドの場所を指定します。パスはドット記法で表記できます。

Return Value

  • パスが指すフィールドのDOUBLE値を返します。
  • 指定されたパスで対応するフィールドが見つからない場合、またはフィールド値がDOUBLE型に変換できない場合はNULLを返します。

Usage 注釈

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を返します。

Examples

  1. キーが"k1"の値を取得する
SELECT get_json_double('{"k1":1.3, "k2":"2"}', "$.k1");
+-------------------------------------------------+
| get_json_double('{"k1":1.3, "k2":"2"}', '$.k1') |
+-------------------------------------------------+
| 1.3 |
+-------------------------------------------------+
  1. キー "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 |
+---------------------------------------------------------------------------+
  1. セカンダリパス 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 |
+---------------------------------------------------------------------+