只读分析实例支持符合 RFC 7159标准的 JSON(JavaScript Object Notation)数据类型。用户可以保存半结构化的 JSON 数据,并对 JSON 文档中的数据进行访问和修改。
存储在 JSON 列中的 JSON 文档,会被转换为便于快速读取和访问的二进制格式。读取 JSON 值时无需重新从文本进行解析。
除了 JSON 数据类型,只读分析实例还提供一组 SQL 函数,用于对 JSON 值进行创建、查询、修改等操作。具体支持的函数如下。
JSON_OBJECT 函数
根据入参创建一个 JSON 对象。
语法:
JSON_OBJECT(key1, value1, key2, value2, ...)JSON_REMOVE 函数
从指定 JSON 文档中删除一个或多个路径对应的元素。
语法:
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。column:JSON 字段。
path:要提取的路径。
JSON_CONTAINS 函数
判断指定 path 是否包含指定数据。包含返回1,不包含返回0。如果任一参数为 NULL,或 path 不存在,则返回 NULL。
语法:
JSON_CONTAINS(json_doc, candidate [, path])json_doc:JSON 字段。
candidate:用于判断的值。
path:路径,可选。
JSON_CONTAINS_PATH 函数
检查 JSON 文档中是否存在指定路径。存在返回1,不存在返回0。如果任一参数为 NULL,则返回 NULL。
语法:
JSON_CONTAINS_PATH(json_doc, one_or_all, path [, path] ...)json_doc:JSON 字段。
one_or_all:取值为
one 或 all。one 表示任意一个路径存在即返回1;all 表示所有路径都存在才返回1。path:路径,支持指定多个。
类型转换
支持将 JSON 转换为 INT、UINT、FLOAT、STRING、DATE、DATETIME、DURATION 类型。
支持将 INT、UINT、FLOAT、STRING、DATE、DATETIME、DURATION 类型转换为 JSON。