我已经使用 MySQL 9 年了,现在有一个新的 Rails 3.2 应用程序,我在其中使用 PostgreSQL。我被我带到项目中的几个假设所困扰。
使用 MySQL,我可以设置数据库设置,以便:
plan = Plan.find_by_name("platinum")
将返回一条记录,即使 db 中的值为Platinum
. 使用 PostgreSQL 的默认设置,它不会那样工作。
我相信这一定是一个普遍的问题。我当然不希望我的客户必须输入完全匹配的大小写。由于某种原因,我在网上找不到任何东西,我只是在 PostgreSQL 的网站上找到了 10 年前不支持此功能的支持案例。希望它现在已经改变了。
解决了:
感谢下面的答案,这里是如何做到这一点:
在 Postgres 9.1+ 中,citext
contrib 模块随代码一起提供。您需要做的就是在 psql 命令行中输入:
create extension citext
现在您可以使用 citext 列类型创建表:
create table people (name ctext);
插入一些行进行测试:
insert into people (name) values ('ADRIAN');
insert into people (name) values ('adrian');
并测试:
select * from people where name = 'Adrian';
结果:
name
--------
adrian
ADRIAN
(2 rows)