在PostgreSQL中将json字段值更新为小写

时间:2019-07-18 09:57:43

标签: sql postgresql

我有一个包含json字段的表。关键之一具有大小写混合的值,我想将它们转换为小写。我尝试了一些方法来做到这一点,但没有任何效果,并且提出了明确的强制转换问题。

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

上述查询引发了以下错误。

  

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

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

1 个答案:

答案 0 :(得分:1)

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

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

demo:db<>fiddle