Mac*_* Sz 3 postgresql json postgresql-9.3
我们可以使用->和->>运算符访问PostgreSQL 9.3中的任何JSON元素。在我看来,#>和#>>仅提供编写JSON路径的较短形式。还是在#>操作员后面有更大的前景?它是否有特殊目的/相对于箭头符号提供了任何优势?首选的写路径方法是哪一种?
这一切都在问:为什么我应该使用#>和#>>运营商在->和->>?
该文档对此有点神秘。
下面的两个查询给出相同的结果:
=> 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
Run Code Online (Sandbox Code Playgroud)
考虑嵌套。
{
"a" : {
"b" : {
"c" : 1,
"d" : 2
}
}
}
Run Code Online (Sandbox Code Playgroud)
想象一下,您有一个json文档,并且您事先不知道它将如何嵌套。如果知道需要三级路径,则可以编写:
SELECT '{
"a" : {
"b" : {
"c" : 1,
"d" : 2
}
}
}'::json -> 'a' -> 'b' -> 'c';
Run Code Online (Sandbox Code Playgroud)
但是,如果您想编写一个事先不知道的查询该怎么办?这就是基于路径的运算符有用的地方。路径可以与文档一起提供,并且查询中不再有关于文档结构的假设。
SELECT '{
"a" : {
"b" : {
"c" : 1,
"d" : 2
}
}
}'::json #>> ARRAY['a','b','c']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2273 次 |
| 最近记录: |