为什么array_remove(POSTGRESQL)在这种情况下不起作用



此操作不正常:SELECT array_remove(array_agg(s1->>'karten'),'8 eich.jpg') from spiele;

输出:["3 eich.jpg","8 eich.jpg","5 sche.jpg","2 herz.jpg","1 laub.jpg","4 eich.jpg","2 sche.jpg","5 laub.jpg","4 herz.jpg","4 sche.jpg"]

s1的数据类型为json;s1->gt;'karten是一个阵列

如果karten引用中的JSON数组,则s1 ->> 'karten不会单独返回每个元素,而是返回一个表示数组的字符串。所以array_agg()并没有真正聚合多个值——只有一个。结果是一个带有单个元素的数组,恰好看起来像一个JSON数组。

如果值是jsonb(在Postgres中处理JSON的推荐数据类型(,则可以使用-运算符从JSON数组中删除元素:

select (s1 -> 'karten')::jsonb - '8 eich.jpg'

将返回一个没有密钥CCD_ 9的CCD_。

不幸的是,从JSON数组到本机数组的转换并不容易。搜索此网站,有多个答案。

最新更新