目录
JSON操作符
对于json和jsonb数据类型,字段、元素和路径提取运算符返回的数据类型与其左侧输入(json和jsonb)相同,但指定为返回text的数据类型除外,后者将值强制为text。如果JSON输入没有与请求匹配的正确结构,则字段、元素和路径提取运算符返回NULL,而不是失败;例如,如果不存在这样的元素。
操作
符
|
右操作
数类型
|
述描
|
例子
|
例子结果
|
->
|
int
|
获得
JSON
数组元素
|
'[{"a":"foo"},{"b":"bar"},{"c":"baz"}]'::json->2
|
{"c":"baz"}
|
->
|
text
|
根据键获得
JSON
对
象的域
|
'{"a": {"b":"foo"}}'::json->'a'
|
{"b":"foo"}
|
->>
|
int
|
获得
JSON
数组元素
的
text
形式
|
'[1,2,3]'::json->>2
|
3
|
->>
|
text
|
获得
JSON
对象域的
t
ext
形式
|
'{"a":1,"b":2}'::json->>'b'
|
2
|
#>
|
text[]
|
获得在指定路径上的
JSON
对象
|
'{"a": {"b":{"c": "foo"}}}'::json#>'{a,b}'
|
{"c": "foo"}
|
#>>
|
text[]
|
获得在指定路径上的
JSON
对象的
text
形式
|
'{"a":[1,2,3],"b":[4,5,6]}'::json#>>'{a,2}'
|
3
|
操作
符
|
右操作数类
型
|
描述
|
例子
|
@>
|
jsonb
|
左边的
json
值包含右边的值
|
'{"a":1,"b":2}'::jso
nb@>'{"b":2}'::js
onb
|
<@
|
jsonb
|
左
JSON
值是否包含在右值
|
'{"b":2}'::jsonb <
@ '{"a":1, "b":2}'::
jsonb
|
?
|
text
|
键
/
元素字符串是否存在于
JSON值
|
'{"a":1,"b":2}'::jso
nb ? 'b'
|
?|
|
text[]
|
是否存在这些键
/
元素字符串
|
'{"a":1, "b":2, "c":
3}'::jsonb ?| array
['b', 'c']
|
?&
|
text[]
|
所有这些键
/
元素字符串都存在
|
'["a", "b"]'::jsonb
?& array['a', 'b']
|
操作符
|
描述
|
<
|
小于
|
>
|
大于
|
<=
|
小于或等于
|
>=
|
大于或等于
|
=
|
等于
|
<>
或者
!=
|
不等于
|
JSON创建函数
此表描述了创建 json数据类型值的函数。
函数
|
描述
|
例子
|
例子结果
|
to_js
on(a
nyel
eme
nt)
|
返回该值作为一个合法的
JSON
象。 数组和组合会被递归处理并且转换成数组和对象
|
to_j
son(
'Fre
d sa
id "
Hi."':
:text
)
|
"Fr
ed
sai
d\"
Hi.
\""
|
arra
y_to
_jso
n(an
yarr
ay[,
prett
y_b
ool])
|
返回该数组为一个
JSON
数组
|
arra
y_to
_jso
n('{{
1,5},
{99,
100}
}'::int
[])
|
[[1,
5],[
99,
10
0]]
|
row
_to_
json
(rec
ord [
, pre
tty_b
ool])
|
返回该行为一个
JSON
对象
|
row
_to_
json
(row
(1,'f
oo'))
|
{"f
1":
1,"f
2":
"fo
o"}
|
json
_bui
ld_a
rray(
VAR
IADI
C "a
ny")
|
从
VARIADIC
参数列表构建一个可能是异种类型的
JSON
数组
|
json
_bui
ld_a
rray(
1,2,'
3',4,
5)
|
[1,
2, "
3",
4,
5]
|
json
_bui
ld_o
bject
(VA
RIA
DIC
"any
")
|
从
VARIADIC
参数列表构建
JSON
对象
|
json
_bui
ld_o
bjec
t('fo
o',1,'
bar',
2)
|
{"f
oo
": 1
, "b
ar"
: 2}
|
json
_obj
ect(t
ext[])
|
从文本数组构建
JSON
对象。数组必须是一维或二维数组
|
json
_obj
ect('
{a, 1
, b, "
def",
c, 3.
5}')
json
_obj
ect('
{{a,
1},{b
, "de
f"},{c
, 3.5
}}')
|
json_obj
ect('
{{a,
1},{b
, "de
f"},{c
, 3.5
}}')
|
json
_obj
ect(k
eys t
ext[],
valu
es te
xt[])
|
从文本阵列中创建
JSON
对象
|
json
_obj
ect('
{a, b
}', '{1
,2}')
|
{"a
": "
1",
"b"
: "2
"}
|
JSON聚合函数
数函
|
参数类型
|
返回类型
|
描述
|
json_agg(record)
|
record
|
json
|
将记录聚合为对象的
JSON数组
|
json_object_agg(name,
value)
|
("any","a
ny")
|
json
|
将名称
/
值对聚合为
JSON
对象
|