GET_JSON_INT
デスクリプション
この関数はJSONドキュメントからフィールドの値を抽出し、INT型に変換するために使用されます。この関数は指定されたパス上のフィールドの値を返すか、値をINT型に変換できない場合やパスが指すフィールドが存在しない場合はNULLを返します。
Syntax
GET_JSON_INT( <json_str>, <json_path>)
必須パラメータ
| parameters | described |
|---|---|
<json_str> | データを抽出するJSONストリングが必要です。 |
<json_path> | JSONパス。フィールドの場所を指定します。パスはドット記法で表記できます。 |
使用上の注意
jsonストリング内の指定されたパスの整数コンテンツを解析して取得します。
<json_path>は$記号で開始し、.をパス区切り文字として使用する必要があります。パスに.が含まれる場合は、ダブルクォートで囲むことができます。
[ ]を使用して配列インデックスを表現し、0から開始します。
パスのコンテンツには"、[、]を含めることはできません。
<json_str>のフォーマットが正しくない場合、または<json_path>のフォーマットが正しくない場合、またはマッチするものが見つからない場合はNULLを返します。
さらに、jsonb型とjsonb_extract_XXX関数を使用して同じ機能を実現することを推奨します。
特別な状況は以下のように処理されます:
- JSONに指定されたフィールドが存在しない場合、<json_path>NULLを返します
- JSONにおける<json_path>で指定されたフィールドの実際の型がjson_extract_tで指定された型と一致しない場合、指定された型に無損失で変換できる場合は指定された型tを返し、変換できない場合はNULLを返します。
例
- キーが"k1"の値を取得する
SELECT get_json_int('{"k1":1, "k2":"2"}', "$.k1");
+--------------------------------------------+
| get_json_int('{"k1":1, "k2":"2"}', '$.k1') |
+--------------------------------------------+
| 1 |
+--------------------------------------------+
- キー "my.key" を持つ配列の2番目の要素を取得します
SELECT get_json_int('{"k1":"v1", "my.key":[1, 2, 3]}', '$."my.key"[1]');
+------------------------------------------------------------------+
| get_json_int('{"k1":"v1", "my.key":[1, 2, 3]}', '$."my.key"[1]') |
+------------------------------------------------------------------+
| 2 |
+------------------------------------------------------------------+
3. Gets the first element in an array with secondary path k1.key -> k2
```sql
SELECT get_json_int('{"k1.key":{"k2":[1, 2]}}', '$."k1.key".k2[0]');
+--------------------------------------------------------------+
| get_json_int('{"k1.key":{"k2":[1, 2]}}', '$."k1.key".k2[0]') |
+--------------------------------------------------------------+
| 1 |
+--------------------------------------------------------------+