GET_JSON_BIGINT
描述
解析并获取 json 字符串内指定路径的整型(BIGINT)内容。
语法
GET_JSON_BIGINT( <json_str>, <json_path>)
必选参数
参数 | 描述 |
---|---|
<json_str> | 需要从中提取数据的 JSON 字符串。 |
<json_path> | JSON 路径,指定字段的位置。路径可以使用点号表示法。 |
注意事项
其中 <json_str>
必须以 $ 符号作为开头,使用 . 作为路径分割符。如果路径中包含 . ,则可以使用双引号包围。
使用 [ ] 表示数组下标,从 0 开始。
path 的内容不能包含 ", [ 和 ]。
如果 <json_str>
格式不对,或 <json_path>
格式不对,或无法找到匹配项,则返回 NULL。
另外,推荐使用jsonb类型和jsonb_extract_XXX函数实现同样的功能。
特殊情况处理如下:
- 如果
<json_path>
指定的字段在JSON中不存在,返回NULL - 如果
<json_path>
指定的字段在JSON中的实际类型和json_extract_t指定的类型不一致,如果能无损转换成指定类型返回指定类型t,如果不能则返回NULL
返回值
- 返回路径指向字段的 BIGINT 值。
- 如果指定路径没有找到对应的字段,或者字段值无法转换为 BIGINT 类型,返回 NULL。
示例
- 获取 key 为 "k1" 的 value
SELECT get_json_bigint('{"k1":1, "k2":"2"}', "$.k1");
+-----------------------------------------------+
| get_json_bigint('{"k1":1, "k2":"2"}', '$.k1') |
+-----------------------------------------------+
| 1 |
+-----------------------------------------------+
- 获取 key 为 "my.key" 的数组中第二个元素
SELECT get_json_bigint('{"k1":"v1", "my.key":[1, 1678708107000, 3]}', '$."my.key"[1]');
+---------------------------------------------------------------------------------+
| get_json_bigint('{"k1":"v1", "my.key":[1, 1678708107000, 3]}', '$."my.key"[1]') |
+---------------------------------------------------------------------------------+
| 1678708107000 |
+---------------------------------------------------------------------------------+
- 获取二级路径为 k1.key -> k2 的数组中,第一个元素
SELECT get_json_bigint('{"k1.key":{"k2":[1678708107000, 2]}}', '$."k1.key".k2[0]');
+-----------------------------------------------------------------------------+
| get_json_bigint('{"k1.key":{"k2":[1678708107000, 2]}}', '$."k1.key".k2[0]') |
+-----------------------------------------------------------------------------+
| 1678708107000 |
+-----------------------------------------------------------------------------+