假设我具有这种json格式:
[
{
"firstName": "John",
"lastName": "Doe"
}
]
我想删除“姓氏”,该怎么办?
到目前为止,我有这个查询,它可以工作,但是问题是它添加了另一个数组
UPDATE person
SET
field = jsonb_set(field::jsonb,
'{0}',
field::jsonb #- '{0,lastName}',
false)
我上面查询的结果:
[
[
{
"firstName": "John"
}
]
]
我想要的结果:
[
{
"firstName": "John"
}
]
答案 0 :(得分:1)
在第三个参数中使用数组的第一个元素(而不是整个数组):
UPDATE person
SET
field = jsonb_set(field::jsonb,
'{0}',
(field::jsonb->0) - 'lastName',
false)
答案 1 :(得分:0)
在这种情况下,不必要的jsonb_set导致了问题。摆脱它。
UPDATE person
SET
field = field::jsonb #- '{0,lastName}'
答案 2 :(得分:-1)
您可以尝试使用REGEXP_REPLACE。
超级基本模式类似于"lastName":"[a-zA-Z]*"
。
要获得更好的效果,请参见regular expression for first and last name。
答案 3 :(得分:-2)
我可以说这是不可能的。请不要尝试。