【问题标题】:How to remove a value from a postgres text column json string array?如何从 postgres 文本列 json 字符串数组中删除一个值?
【发布时间】:2021-08-02 08:13:34
【问题描述】:

我有一个 postgresql 表,其中有一列是文本数据类型。此列值是 JSON 字符串数组。这些值可以按任何顺序排列,例如

["a", "b", "c"] 

["c", "a", "b", "d"] 

["a"]

现在这些值之一 "b" 不再使用,需要从表中的每条记录中删除。

所以["a", "b", "c"] 应该转换为["a", "c"]

我已经研究过使用其中一个 postgres functions array_remove() 但无法让它工作。

使用remove后是否可以转成数组类型再转回字符串?

【问题讨论】:

  • 对 JSON 值使用 jsonjsonb 数据类型,而不是 text。有 many functions 使用它。

标签: sql json postgresql


【解决方案1】:

使用jsonb 值(必要时转换您的文本)和- 运算符:

UPDATE table SET col = col::jsonb - 'a';

(online demo)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-12
    • 2013-10-27
    • 2013-03-02
    • 2021-12-27
    • 2021-10-15
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    相关资源
    最近更新 更多