【问题标题】:Update json field value to lower case in Postgres在 Postgres 中将 json 字段值更新为小写
【发布时间】:2019-11-27 05:35:24
【问题描述】:

我有一个包含 json 字段的表。其中一个键具有混合大小写值,我想将它们转换为小写。我已经尝试了几种方法来做到这一点,但没有任何效果并且会引发明确的演员表问题。

UPDATE table SET data = LOWER( CAST (data AS json)) WHERE id=123;

以上查询引发以下错误。

没有函数匹配给定的名称和参数类型。你可能需要 添加显式类型转换。

  • 我也尝试过更新特定的键,但这也引发了同样的错误。
  • 我不确定PostgreSQL是否允许对json数据进行这种操作

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    lower() 用于text 类型。因此,首先将您的 json 数据转换为文本。在lower() 执行之后,您可以将其转换回json 类型:

    UPDATE a SET data = LOWER(data::text)::json;
    

    demo:db<>fiddle

    【讨论】:

    • 哦是的.. 我试过这个UPDATE a SET data = LOWER(data::text) 但后来数据是 json 类型所以没有工作.. 但我可以将它转换回 json ..... 就像一个魅力。 . 非常感谢
    • @user5594493:这会将 everything 转换为小写,不仅是值,还有键。
    • 是的,data 中的所有内容,但不用担心我的密钥已经是小写的了。感谢更新
    • @S-Man 如果我们想要对应键的特定值..有没有办法?
    猜你喜欢
    • 2017-05-08
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多