【问题标题】:PostgreQL update data from Json field which of type multidimensional arrayPostgresQL 更新来自 Json 字段的多维数组类型的数据
【发布时间】:2019-04-02 00:09:12
【问题描述】:

我正在查找从哪个 json 类型的列的表中更新数据的查询。

我的桌子是这样的:

ID |    Details

-------------------------------------------------------------------------------------------

1  | {"_translated": {"en_US": {"is_reviewed": "false"}, "default_locale": "en"}}

2  | {"_translated": {"en_US": {"is_reviewed": "false"}, "default_locale": "en"}}

3  | {"_translated": {"en_CA": {"is_reviewed": "true"}, "default_locale": "en"}}

4  | {"_translated": {"en_CA": {"is_reviewed": "false"}, "default_locale": "en"}}

我想将那些 is_reviewed = false 的行更新为 true。

输出:-

ID |    Details

-------------------------------------------------------------------------------------------

1  | {"_translated": {"en_US": {"is_reviewed": "true"}, "default_locale": "en"}}

2  | {"_translated": {"en_US": {"is_reviewed": "true"}, "default_locale": "en"}}

3  | {"_translated": {"en_CA": {"is_reviewed": "true"}, "default_locale": "en"}}

4  | {"_translated": {"en_CA": {"is_reviewed": "true"}, "default_locale": "en"}}

请有人帮我查询一下。

【问题讨论】:

    标签: php sql json postgresql


    【解决方案1】:

    使用jsonb_set(Postgres 9.5+)

    UPDATE t SET details =
    jsonb_set(details::jsonb, '{_translated,en_US,is_reviewed}','"true"') where id = 1;
    UPDATE t SET details =
    jsonb_set(details::jsonb, '{_translated,en_US,is_reviewed}','"true"') where id = 2;
    UPDATE t SET details =
    jsonb_set(details::jsonb, '{_translated,en_CA,is_reviewed}','"true"') where id = 4;
    

    Demo

    【讨论】:

      猜你喜欢
      • 2019-03-28
      • 2016-10-05
      • 1970-01-01
      • 2013-08-15
      • 2015-10-09
      • 2014-11-06
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      相关资源
      最近更新 更多