重要
你正在查看 TiDB 数据库的归档文档,归档文档不再提供任何更新。如无特殊需求,建议使用 TiDB 数据库的
最新 LTS 版本。
JSON 函数
警告
当前该功能为实验特性,不建议在生产环境中使用。
TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数。MySQL 5.7 发布后,又增加了更多 JSON 函数,TiDB 并未支持所有这些函数(参见未支持的函数)。
创建 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 文档中的路径 |
修改 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_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_STORAGE_SIZE(json_doc)][json_storage_size] | 返回存储 JSON 值所需的大致字节大小,由于不考虑 TiKV 压缩的字节大小,因此函数的输出与 MySQL 不严格兼容 |
聚合函数
函数 | 功能描述 |
---|
[JSON_OBJECTAGG(key, value)][json_objectagg] | 提供给定键的值的聚合 |
未支持的函数
TiDB 暂未支持以下 JSON 函数。相关进展参见 TiDB #7546:
JSON_MERGE_PATCH
JSON_PRETTY
JSON_ARRAYAGG
另请参阅