PostgreSQL教程 -》数据类型 -》jsonpath Type
最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!
我要咨询8.14.6. jsonpath Type
在PostgreSQL中,jsonpath类型实现支持SQL/JSON 路径语言以有效地查询 JSON 数据。 它提供了已解析的SQL/JSON路径表达式的二进制表示,该表达式指定路径引擎从JSON数据中检索的项,以便使用SQL/JSON查询函数进行进一步处理。
SQL/JSON 路径谓词和运算符的语义通常遵循 SQL。同时,为了提供使用 JSON 数据的最自然方法,SQL/JSON 路径语法使用一些 JavaScript 约定:
小数点 (.) 用于成员访问.
方括号 ([]) 用于数组访问.
与从 1 开始的常规 SQL 数组不同,SQL/JSON 数组是 0 相对的。
SQL/JSON路径表达式通常以SQL字符串文字形式写入SQL查询中,因此它必须用单引号括起来,并且值中需要的任何单引号都必须是双引号(参见 第 4.1.2.1 节)。 某些形式的路径表达式需要其中的字符串文本。这些嵌入的字符串文本遵循JavaScript/ECMAScript约定:它们必须用双引号括起来,并且反斜杠转义可以用于表示其他难以输入的字符。 特别是,在嵌入字符串文本中编写双引号的方法为\",并且要编写反斜杠本身,你必须写\\。 包括在JSON字符串中识别的其他特殊的反斜杠序列: \b, \f, \n, \r, \t, \v 对于各种 ASCII 控制字符,以及由它的4个六位数编码点标识标识的 Unicode 字符\uNNNN。 反斜杠语法还包括 JSON 不允许的两个案例: \xNN 对于只用两个十六进制数字编写的字符代码,以及\u{N...} 对于用 1 到 6 个十六进制数字编写的字符代码。
路径表达式由一系列路径元素组成,可以如下所示:
JSON基本类型的路径文字:Unicode文本、数字、真、假或空.
Path variables listed in 表 8.24中列出的路径变量。
表 8.25中列出的访问器运算符。
第 9.15.2.3 节中列出的jsonpath 运算符和方法。
括号,可用于提供筛选器表达式或定义路径计算的顺序。
有关使用jsonpath具有 SQL/JSON 查询函数的表达式的详细信息,参见第 9.15.2 节。
表 8.24. jsonpath 变量
变量 描述
$ 表示要查询的 JSON 文本的变量(context item).
$varname 命名变量。其值可以由参数vars多个JSON处理函数设置。 详细信息请参见 表 9.47 和它的注释。
@ 表示筛选器表达式中路径计算结果的变量。
表 8.25. jsonpath Accessors
访问器运算符 描述
. key
."$varname"
返回具有指定密钥的对象成员的成员访问器。 如果键名称是以 $ 开头的命名变量,或者不符合标识符的 JavaScript 规则,则必须将其包含在双引号中作为字符串文本。
.*
通配符成员访问器,该访问器返回位于当前对象顶层的所有成员的值。
.**
递归通配符成员访问器,它处理当前对象JSON层次结构的所有级别,并返回所有成员值,而不管它们的嵌套级别如何。 这是 PostgreSQL SQL/JSON 标准的扩展。
.**{level}
.**{start_level to end_level}
与 .** 相同,但在 JSON 层次结构的嵌套级别上具有筛选器。嵌套级别指定为整数。 零级别对应于当前对象。要访问最低嵌套级别,可以使用last关键字。 这是 PostgreSQL SQL/JSON 标准的扩展。
[subscript, ...]
数组元素访问器. subscript 能够以两种形式给出: index 或 start_index 到 end_index。 第一个窗体按其索引返回单个数组元素。第二个窗体按索引范围返回数组切片,包括对应于提供的元素start_indexend_index。
指定的index可以是整数,也可以是返回单个数值的表达式,该数值将自动转换为整数。 零索引对应于第一个数组元素。你还可以使用last 关键字来表示最后一个数组元素,这对于处理未知长度的数组很有用。
[*]
返回所有数组元素的通配符数组元素访问器。
[6] 对于这种目的,术语“值”包括数组元素,尽管 JSON 的术语有时 认为数组元素与对象内的值不同。