我正在使用 PostgreSQL 8.4 在 OS X 上的 Rails 中开发一个应用程序。我需要为应用程序设置数据库,以便标准文本查询不区分大小写。例如:
SELECT * FROM files WHERE title = '令人难以置信的文件'
应返回与以下相同的结果:
SELECT * FROM files WHERE title = '令人难以置信的文档'
为了清楚起见,我不想使用:
(1) where 子句中的 LIKE 或任何其他类型的特殊比较运算符
(2) citext 用于列数据类型或任何其他特殊列索引
(3) 任何类型的全文软件,如Sphinx
我想要的是设置数据库区域设置以支持不区分大小写的文本比较。我在 Mac OS X (10.5 Leopard) 上并且已经尝试将编码设置为“LATIN1”,排序规则和 Ctype 都设置为“en_US.ISO8859-1”。至今没有成功。
非常感谢任何帮助或建议。
谢谢!
更新
出于对回答者的尊重,我将给出的答案之一标记为正确答案。但是,我选择以不同于建议的方式解决此问题。在进一步审查应用程序之后,只有少数情况下我需要对数据库字段进行不区分大小写的比较,因此我将为需要不区分大小写比较的那些创建影子数据库字段。例如,name 和 name_lower。我相信我在网上某个地方遇到了这个解决方案。希望 PostgreSQL 将允许与 SQL Server 将来提供的类似的排序选项(即 DOCI)。
特别感谢所有回复的人。