Skip to content

Latest commit

 

History

History
87 lines (73 loc) · 7.02 KB

json-functions.md

File metadata and controls

87 lines (73 loc) · 7.02 KB
title category aliases
JSON 函数及语法糖
reference
/docs-cn/dev/reference/sql/functions-and-operators/json-functions/

JSON 函数及语法糖

TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数。MySQL 5.7 发布后,又增加了更多 JSON 函数,TiDB 并未支持所有这些函数(参见未支持的函数)。

创建 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 文档中的路径

修改 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_DEPTH(json_doc) 返回 JSON 文档的最大深度
JSON_LENGTH(json_doc[, path]) 返回 JSON 文档的长度;如果路径参数已定,则返回该路径下值的长度
JSON_TYPE(json_val) 检查某 JSON 文档内部内容的类型
JSON_VALID(json_val) 检查某 JSON 文档的内容是否有效

未支持的函数

TiDB 暂未支持以下 JSON 函数。相关进展参见 TiDB #7546:

  • JSON_MERGE_PATCH
  • JSON_PRETTY
  • JSON_STORAGE_SIZE
  • JSON_ARRAYAGG
  • JSON_OBJECTAGG