title |
aliases |
summary |
JSON 函数 |
/docs-cn/dev/functions-and-operators/json-functions/ |
/docs-cn/dev/reference/sql/functions-and-operators/json-functions/ |
|
TiDB 支持 MySQL 8.0 中提供的大部分 JSON 函数。 |
你可以使用 JSON 函数处理 JSON 类型的数据。
函数 |
功能描述 |
JSON_CONTAINS() |
通过返回 1 或 0 来表示目标 JSON 文档中是否包含给定的 candidate JSON 文档 |
JSON_CONTAINS_PATH() |
通过返回 0 或 1 来表示一个 JSON 文档在给定路径是否包含数据 |
JSON_EXTRACT() |
从 JSON 文档中解出某一路径对应的子文档 |
-> |
返回执行路径后面的 JSON 列的值;JSON_EXTRACT(doc, path_literal) 的别名 |
->> |
返回执行路径后面的 JSON 列的值和转义后的结果; JSON_UNQUOTE(JSON_EXTRACT(doc, path_literal)) 的别名 |
JSON_KEYS() |
返回从 JSON 对象的顶级值作为 JSON array 的键,如果给定了路径参数,则从选定路径中获取顶级键 |
JSON_SEARCH() |
在 JSON 文档中搜索字符串的一个或所有匹配项 |
MEMBER OF() |
如果传入值是 JSON array 中的一个元素,返回 1,否则返回 0 |
JSON_OVERLAPS() |
表示两个 JSON 文档中是否包含公共部分。返回 1 表示两个 JSON 文档中包含公共部分,否则返回 0 |
许多 JSON 函数都使用 JSONPath 来选择 JSON 文档中的特定内容。
符号 |
描述 |
$ |
文件根目录 |
. |
选择成员 |
[] |
选择数组 |
* |
通配符 |
** |
路径通配符 |
[<n> to <n>] |
选择数组范围 |
下面以如下 JSON 文档为例,说明如何使用 JSONPath:
{
"database": {
"name": "TiDB",
"features": [
"distributed",
"scalable",
"relational",
"cloud native"
],
"license": "Apache-2.0 license",
"versions": [
{
"version": "v8.1.0",
"type": "lts",
"release_date": "2024-05-24"
},
{
"version": "v8.0.0",
"type": "dmr",
"release_date": "2024-03-29"
}
]
},
"migration_tool": {
"name": "TiDB Data Migration",
"features": [
"MySQL compatible",
"Shard merging"
],
"license": "Apache-2.0 license"
}
}
JSONPath |
描述 |
JSON_EXTRACT() 示例 |
$ |
文档根目录 |
返回完整文档 |
$.database |
database 对象 |
返回以 "database" 开头的完整结构。不包括 "migration_tool" 和其下的结构。 |
$.database.name |
database 的 name 值 |
"TiDB" |
$.database.features |
database 的 features 值 |
["distributed", "scalable", "relational", "cloud native"] |
$.database.features[0] |
database 的 features 中的第一个值 |
"distributed" |
$.database.features[2] |
database 的 features 中的第三个值 |
"relational" |
$.database.versions[0].type |
database 的 versions 中第一个元素的 type 值 |
"lts" |
$.database.versions[*].release_date |
versions 中所有的 release_date 值 |
["2024-05-24","2024-03-29"] |
$.*.features |
由所有的 features 值组成的两个数组 |
[["distributed", "scalable", "relational", "cloud native"], ["MySQL compatible", "Shard merging"]] |
$**.version |
包含用通配符匹配到所有的 version 值 |
["v8.1.0","v8.0.0"] |
$.database.features[0 to 2] |
database 中指定范围的 features 值,features[0 to 2] 代表从 features 的第一个值到第三个值 |
["scalable","relational"] |
更多信息,请参考 JSONPath -- XPath for JSON。
JSON_SCHEMA_VALIDATION_REPORT()
JSON_TABLE()
JSON_VALUE()
更多信息,请参考 #14486。