将 postgres 中列的值更新为小写

Posted

技术标签:

【中文标题】将 postgres 中列的值更新为小写【英文标题】:Update value of a column in postgres into lower case 【发布时间】:2017-05-08 21:17:41 【问题描述】:

我有一个表名 service_table 有一些字段。一个字段的日期名称如 SundayMondayTuesday 等。我想将 postgres 数据库表中的所有列值更改为小写. 例如 'Sunday' 更新为 'sunday' 我写了一个查询

update service_table set days=lower(days);

但它显示

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

注意:这个表有一些外键。

【问题讨论】:

service_table 列的数据类型是什么 days确切数据类型是什么? 请添加整个错误消息,而不仅仅是提示部分。 数据类型为:svc_days = ArrayField(models.CharField(max_length=10), size=7) 嘿!我正在使用 postgres 命令提示符。只出现了提示。 【参考方案1】:

您可以在 Django shell 中执行此操作

from django.db.models import F
from django.db.models.functions import Lower

service_table.objects.update(days=Lower(F('days'))

Django update() 是直接更新的批量操作。

Django F() 可以引用模型字段值并使用它们执行数据库操作,而无需将它们从数据库中拉出到 Python 内存中。

F() 帮助拉取模型字段值,然后处理到需求并使用update() 将其保存回来

【讨论】:

来自新成员的好回答。如果你添加一个关于这里发生的事情的解释会更好。

以上是关于将 postgres 中列的值更新为小写的主要内容,如果未能解决你的问题,请参考以下文章

将序列值设置为 HSQL 中列的默认值

Postgres 表中列的顺序会影响性能吗?

postgres表中列的顺序是否会影响性能?

更新查询以根据另一表中的值更改一个表中列的现有值

更新查询以根据不同表中的值更改一个表中列的现有值

将定义集中的值设置为 Pandas 数据框中列的给定值(f.e. NaN)