MySQL支持并在本手册其他地方描述的许多JSON函数(参见第12.18节"JSON函数")需要路径表达式才能识别JSON文档中的特定元素。路径由路径的范围和一个或多个路径腿组成。对于MySQL JSON函数中使用的路径,范围始终是正在搜索或以其他方式操作的文档,由前导字符表示。路径腿由句点字符 () 分隔。数组中的像元由 表示,其中N
是非负整数。键的名称必须是双引号字符串或有效的 ECMAScript 标识符(请参阅ECMAScript 语言规范中的标识符名称和标识符)。路径表达式(如 JSON 文本)应使用 、 或 字符集进行编码。其他字符编码被隐式强制为 。完整的语法如下所示:$
.
[
N
]ascii
utf8
utf8mb4
utf8mb4
pathExpression:
scope[(pathLeg)*]
pathLeg:
member | arrayLocation | doubleAsterisk
member:
period ( keyName | asterisk )
arrayLocation:
leftBracket ( nonNegativeInteger | asterisk ) rightBracket
keyName:
ESIdentifier | doubleQuotedString
doubleAsterisk:
'**'
period:
'.'
asterisk:
'*'
leftBracket:
'['
rightBracket:
']'
如前所述,在MySQL中,路径的范围始终是正在操作的文档,表示为。您可以在 JSON 路径表达式中用作文档的 synonynm。$
'$'
某些实现支持 JSON 路径作用域的列引用;MySQL 8.0 不支持这些。
通配符和令牌的使用方式如下:*
**
-
.*
表示对象中所有成员的值。 -
[*]
表示数组中所有单元格的值。 -
[
表示以prefix
]**suffix
前缀
开头并以后缀
结尾的所有路径。前缀
是可选的,而后缀
是必需的;换句话说,路径可能不会以 结尾。**
此外,路径可能不包含 序列 。
***
有关路径语法示例,请参阅将路径作为参数的各种 JSON 函数的说明,例如JSON_CONTAINS_PATH()、JSON_SET()和JSON_REPLACE()。 有关包含 和 通配符使用的示例,请参阅JSON_SEARCH()函数的说明。*
**
MySQL 8.0还支持使用关键字(例如)的JSON数组子集的范围表示法,以及关键字作为数组最右侧元素的同义词。有关详细信息和示例,请参阅搜索和修改 JSON 值。to
$[2 to 10]
last