在2.2410.x 及之后的版本中,只读分析引擎新增支持符合 RFC 7159 标准的 JSON(JavaScript Object Notation)数据类型。用户可以保存半结构化的 JSON 数据并可以访问和修改 JSON 文档中的数据。
存储在 JSON 列中的 JSON 文档可以被转换为便于快速读取和访问的格式。当服务器必须读取以二进制格式存储的 JSON 值时,不需要从文本中解析该值。
除了 JSON 数据类型,还有一组 SQL 函数可用于对 JSON 值进行创建、搜索等操作。详细支持的函数如下:
JSON_OBJECT 函数
创建 JSON 对象。
语法:
JSON_OBJECT(key1, value1, key2, value2…)
根据入参值创建一个 JSON 对象。
JSON_REMOVE 函数
从指定 JSON 对象中删除对应的 path。
语法:
JSON_REMOVE(json_doc, path[, path] ...)
json_doc 是 JSON 字段,path 是路径。支持多个路径。
JSON_EXTRACT 函数
从 JSON 字段中提取指定路径的元素。如果指定的路径不存在,则会返回 NULL。可指定多个 path,匹配到的多个值会以数组形式返回。
语法:
JSON_EXTRACT(json_doc, path[, path] ...)
与column-> path
同义。json_doc 是 JSON 字段,path 是路径。
JSON_UNQUOTE 函数
将 JSON 转义成字符串输出。
语法:
JSON_UNQUOTE(column -> path)
与column->> path
同义。json_doc 是 JSON 字段,path 是路径。
JSON_CONTAINS 函数
指定 path 是否包含指定数据。若包含则返回1,若不包含则返回0,如果有参数为 NULL 或者 path 不存在,则返回 NULL。
语法:
JSON_CONTAINS(json_doc, candidate[, path])
json_doc 是 JSON 字段,candidate 为判断值,path 是路径。
JSON_CONTAINS_PATH 函数
检查是否存在指定路径,是否满足一个或者所有。若存在则返回1,若不存在则返回0,如果有参数为 NULL,则返回 NULL。
语法:
JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] …)
json_doc 是 JSON 字段,one_or_all 中 one 表示查询到一个即返回,all 表示查询所有后才返回,path 是路径。支持多个路径。
类型转换
支持 JSON 到 INT、UINT、FLOAT、STRING、DATE、DATETIME、DURATION 的转换。
支持将 INT、UINT、FLOAT、STRING、DATE、DATETIME、DURATION 转换为 JSON。