带有整数值的PostgreSQL更新列

永远阳光明媚

我有一列jsonb类型,并包含字符串或整数格式的元素列表。我现在想要的是将它们全部设为相同的类型,例如,所有int或所有字符串格式

尝试过:通过这种方式,我得到单个元素,但是我需要更新列表中的所有元素。

SELECT parent_path -> 1 AS path
    FROM abc
    LIMIT 10

要么

Update abc SET parent_path = ARRAY[parent_path]::TEXT[] AS parent_path
FROM abc

要么

UPDATE abc SET parent_path = replace(parent_path::text, '"', '') where id=123

电流输出

         path
[6123697, 178, 6023099]
[625953521394212864, 117, 6023181]
["153", "6288361", "553248635949090971"]
[553248635358954983, 178320, 174, 6022967]
[6050684, 6050648, 120, 6022967]
[653, 178238, 6239135, 38, 6023117]
["153", "6288496", "553248635977039112"]
[553248635998143523, 6023185]
[553248635976194501, 6022967]
[553248635976195634, 6022967]

预期产量

        path
[6123697, 178, 6023099]
[625953521394212864, 117, 6023181]
[153, 6288361, 553248635949090971]   <----
[553248635358954983, 178320, 174, 6022967]
[6050684, 6050648, 120, 6022967]
[653, 178238, 6239135, 38, 6023117]
[153, 6288496, 553248635977039112]   <----
[553248635998143523, 6023185]
[553248635976194501, 6022967]
[553248635976195634, 6022967]

注意:列表上缺少双引号。我从这里尝试过几种方法,但是没有运气

a_horse_with_no_name

您将必须取消嵌套它们,清理每个元素,然后将其聚合回数组:

以下将所有元素转换为整数:

select (select jsonb_agg(x.i::bigint order by idx)
        from jsonb_array_elements_text(a.path) with ordinality as x(i, idx)
       ) as clean_path
from abc a;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档