jsonb
值,并需要删除其中的一个元素:{"values": ["11", "22", "33"]}
jsonb_set(column_name, '{values}', ((column_name -> 'values') - '33')) -- WORKS!
我也有一个类似的 jsonb
值,其中包含数字,而非字符串:
{"values": [11, 22, 33]}
jsonb_set(column_name, '{values}', ((column_name -> 'values') - 33)) -- FAILS!
在这种情况下,
33
被用作数组的索引。如何从JSON数组中删除数字项?
jsonb '33'
相对于to_jsonb(33)
有什么优势吗? - user330315'33'
强制转换为jsonb
。第二个处理数字字面量33
,类型解析到达integer
,因此使用相关的输入函数将其强制转换为integer
;然后查找具有一个参数的名为to_jsonb
的函数,找到一个函数并且函数类型解析接受它,因为它采用anyelement
,然后执行该函数并将integer
转换为jsonb
。所以,是的,第一个更快,更少出错。也更短,更清晰(在我看来)。 - Erwin Brandstetter'33'::jsonb
和jsonb '33'
是一样的。但后者少了一个字符。 :) - Erwin Brandstetter