gpt4 book ai didi

json - PostgreSQL 中#> 和->> 运算符有什么区别?

转载 作者:行者123 更新时间:2023-12-02 21:08:39 25 4
gpt4 key购买 nike

我们可以使用 ->->> 运算符访问 PostgreSQL 9.3 中的任何 JSON 元素。在我看来, #>#>> 仅提供了编写 JSON 路径的较短形式。或者 #> 运算符背后有更大的图景吗?它是否有特殊用途/比箭头表示法有任何优势?哪一种是编写路径的首选方法?

这一切都涉及到一个问题:为什么我应该在 -> 上使用 #>#>> 运算符>>->>

The docs对此有点神秘。

下面的两个查询给出相同的结果:

=> select '{"a":[1,2,3],"b":[4,5,6]}'::json#>'{a,2}';
?column?
----------
3

=> select '{"a":[1,2,3],"b":[4,5,6]}'::json->'a'->>2;
?column?
----------
3

最佳答案

考虑嵌套。

{
"a" : {
"b" : {
"c" : 1,
"d" : 2
}
}
}

假设您有一个 json 文档,并且您事先不知道它将如何嵌套。如果您知道需要三级路径,您可以编写:

SELECT '{
"a" : {
"b" : {
"c" : 1,
"d" : 2
}
}
}'::json -> 'a' -> 'b' -> 'c';

但是如果您想编写一个事先不知道的查询该怎么办?这就是基于路径的运算符有用的地方;路径可以与文档一起提供,并且不再对查询中的文档结构进行任何假设。

SELECT '{
"a" : {
"b" : {
"c" : 1,
"d" : 2
}
}
}'::json #>> ARRAY['a','b','c']

关于json - PostgreSQL 中#> 和->> 运算符有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com