我想在varchar列中实现不区分大小写的唯一性.但是,Postgres中没有不区分大小写的文本数据类型.由于文本的原始大小写并不重要,在插入具有唯一约束的列之前,最好将所有文本转换为小写/大写.此外,它还需要一个索引来快速搜索.

在Postgres中,有没有办法在插入数据之前对数据进行操作?

我看了另一个问题:How to automatically convert a MySQL column to lowercase.

此外,由于这些数据将由各种应用程序读取/写入,所以在每个应用程序中使用小写数据并不是一个好主意.

推荐答案

您不需要不区分大小写的数据类型(尽管是there is one)

CREATE UNIQUE INDEX idx_lower_unique 
   ON your_table (lower(the_column));

这样你甚至不必乱动原始数据.

Postgresql相关问答推荐

无法在PostgreSQL中创建方案和表

mosquito-go-auth with postgres authorization error

Postgres:这是对OVERLAPS谓词的等效重写吗?

是否可以短时间运行 VACUUM FULL 并获得一些好处?

PostgreSQL - 列出模式中的所有唯一约束

PostgreSQL 中的复制槽是否会阻止删除 WALL,即使它们来自另一个数据库?

postgres 的密码

PostgreSQL 错误:42P01:relation "[Table]" does not exist

PostgreSQL - 改变数字的精度?

Django 1.8 数组字段追加和扩展

在postgresql中按经纬度查找最近的位置

try 访问本地主机中的数据库时如何解决Error: The server does not support SSL connections?

在 PostgreSQL 中将时间转换为秒

从time without time zone和时区名称中获取time with time zone

PostgreSQL 使用 UUID 与文本作为主键

如何从 PostgreSQL 中的 Json 数组中获取元素

学习 PL/pgSQL 的好资源?

如何使用 PostgreSQL 在任何列中查找所有具有 NULL 值的行

使用 PostgreSQL 进行字母数字排序

Postgresql 对象 ID 和元组