postgresql实现整改jsonb字段中的某个值
||jsonb连接两个json对象,组成一个新的json对象select '["a", "b"]'::jsonb || '["c", "d"]'::jsonb;["a", "b", "c", "d"]
-text删除左侧json对象中键为text的键值对select '{"a": "b"}'::jsonb - 'a';{}
-integer删除数组指定索引处的元素,如果索引值为负数,则从右边计算索引值。
如果最上层容器内不是数组,则抛出错误。select '["a", "b"]'::jsonb - 1;["a"]
#-text[]删除指定路径下的域或元素(如果是json数组,且整数值是负的,
则索引值从右边算起)select '["a", {"b":1}]'::jsonb #- '{1,b}';["a", {}]
json创建函数
函数描述示例结果
to_json(anyelement)
to_jsonb(anyelement)返回json或jsonb类型的值。数组和复合被转换(递归)成数组和对象。另外除数字、
布尔、NULL值(直接使用NULL抛出错误)外,其他标量必须有类型转换。(此处请参考原文)select to_json('3'::int);3
array_to_json(anyarray
[, pretty_bool])以JSON数组返回该数组。PostgreSQL多维数组变成JSON数组中的数组。
如果pretty_bool 为真,则在维度1元素之间添加换行。select array_to_json('{{1,5},{99,100}}'::int[],true);[[1,5], +
[99,100]]
row_to_json(record [, pretty_bool])以JSON对象返回行。如果pretty_bool 为真,则在级别1元素之间添加换行。select row_to_json(row(1,'foo'),true);{"f1":1, +
"f2":"foo"}
json_build_array(VARIADIC "any")
jsonb_build_array(VARIADIC "any")建立一个由可变参数列表组成的不同类型的JSON数组select json_build_array(1,2,'3',4,5);[1, 2, "3", 4, 5]
json_build_object(VARIADIC "any")
jsonb_build_object(VARIADIC "any")建立一个由可变参数列表组成的JSON对象。参数列表参数交替转换为键和值。select json_build_object('foo',1,'bar',2);{"foo" : 1, "bar" : 2}
json_object(text[])
jsonb_object(text[])根据text[]数组建立一个json对象,如果是一维数组,则必须有偶数个
元素,元素交替组成键和值。如果是二维数组,则每个元素必须有2个元素,可以组成键值对。select json_object('{a, 1, b, "def", c, 3.5}');
select json_object('{{a, 1},{b, "def"},{c, 3.5}}');{"a" : "1", "b" : "def", "c" : "3.5"}
json_object(keys text[], values text[])
jsonb_object(keys text[], values text[])分别从两组text[]中获取键和值,与一维数组类似。select json_object('{a, b}', '{1,2}');{"a" : "1", "b" : "2"}
json处理函数
函数返回类型描述示例结果
json_array_length(json)
jsonb_array_length(jsonb)int返回Json数组最外层元素个数select json_array_length('[1,2,3,{"f1":1,"f2":[5,6]},4]');5
json_each(json)
jsonb_each(jsonb)setof key text, value json
setof key text, value jsonb将最外层Json对象转换为键值对集合select json_each('{"a":"foo", "b":"bar"}');(a,"""foo""")
(b,"""bar""")
json_each_text(json)
(编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |