存储在 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。