Skip to content

Latest commit

 

History

History
77 lines (61 loc) · 8.7 KB

json-functions.md

File metadata and controls

77 lines (61 loc) · 8.7 KB
title summary
JSON 函数
TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数,包括创建、搜索、修改、返回属性和效用函数。这些函数可用于处理 JSON 值,如创建 JSON 文档、搜索 JSON 文档中的值、修改 JSON 文档、返回 JSON 值属性和聚合函数。此外,还有其他相关函数可供参考。

JSON 函数

TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数。

创建 JSON 值的函数

函数 功能描述
JSON_ARRAY([val[, val] ...]) 根据一系列元素创建一个 JSON 文档
JSON_OBJECT(key, val[, key, val] ...) 根据一系列 K/V 对创建一个 JSON 文档
JSON_QUOTE(string) 返回一个字符串,该字符串为带引号的 JSON 值

搜索 JSON 值的函数

函数 功能描述
JSON_CONTAINS(target, candidate[, path]) 通过返回 1 或 0 来表示目标 JSON 文档中是否包含给定的 candidate JSON 文档
JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...) 通过返回 0 或 1 来表示一个 JSON 文档在给定路径是否包含数据
JSON_EXTRACT(json_doc, path[, path] ...) 从 JSON 文档中解出某一路径对应的子文档
-> 返回执行路径后面的 JSON 列的值;JSON_EXTRACT(doc, path_literal) 的别名
->> 返回执行路径后面的 JSON 列的值和转义后的结果; JSON_UNQUOTE(JSON_EXTRACT(doc, path_literal)) 的别名
JSON_KEYS(json_doc[, path]) 返回从 JSON 对象的顶级值作为 JSON array 的键,如果给定了路径参数,则从选定路径中获取顶级键
JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...]) 返回指定字符在 JSON 文档中的路径
value MEMBER OF(json_array) 如果传入值是 JSON array 中的一个元素,返回 1,否则返回 0
JSON_OVERLAPS(json_doc1, json_doc2) 表示两个 JSON 文档中是否包含公共部分。返回 1 表示两个 JSON 文档中包含公共部分,否则返回 0

修改 JSON 值的函数

函数 功能描述
JSON_APPEND(json_doc, path, value) JSON_ARRAY_APPEND 的别名
JSON_ARRAY_APPEND(json_doc, path, value) 将值追加到指定路径的 JSON 数组的末尾
JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...) 将数组插入 JSON 文档,并返回修改后的文档
JSON_INSERT(json_doc, path, val[, path, val] ...) 在 JSON 文档中在某一路径下插入子文档
JSON_MERGE(json_doc, json_doc[, json_doc] ...) 已废弃的 JSON_MERGE_PRESERVE 别名
JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...) 合并 JSON 文档
JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...) 将两个或多个 JSON 文档合并成一个文档,并返回合并结果
JSON_REMOVE(json_doc, path[, path] ...) 移除 JSON 文档中某一路径下的子文档
JSON_REPLACE(json_doc, path, val[, path, val] ...) 替换 JSON 文档中的某一路径下的子文档
JSON_SET(json_doc, path, val[, path, val] ...) 在 JSON 文档中为某一路径设置子文档
JSON_UNQUOTE(json_val) 去掉 JSON 值外面的引号,返回结果为字符串
JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...) 将值添加到 JSON 文档指定数组的末尾,并返回添加结果
JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...) 将值插入到 JSON 文档的指定位置,并返回插入结果

返回 JSON 值属性的函数

函数 功能描述
JSON_DEPTH(json_doc) 返回 JSON 文档的最大深度
JSON_LENGTH(json_doc[, path]) 返回 JSON 文档的长度;如果路径参数已定,则返回该路径下值的长度
JSON_TYPE(json_val) 检查某 JSON 文档内部内容的类型
JSON_VALID(json_doc) 检查 JSON 文档内容是否有效;用于将列转换为 JSON 类型之前对该列进行检查

效用函数

函数 功能描述
JSON_PRETTY(json_doc) 格式化 JSON 文档
JSON_STORAGE_FREE(json_doc) 返回该 JSON 对象的存储空间中空闲的字节数。由于 TiDB 采用与 MySQL 完全不同的存储结构,本函数对合法的 JSON 值总是返回 0,主要用于兼容 MySQL 8.0
JSON_STORAGE_SIZE(json_doc) 返回存储 JSON 值所需的大致字节大小,由于不考虑 TiKV 压缩的字节大小,因此函数的输出与 MySQL 不严格兼容

聚合函数

函数 功能描述
JSON_ARRAYAGG(key) 提供指定列 key 的聚合
JSON_OBJECTAGG(key, value) 提供给定两列键值对的聚合

另请参阅