我正在使用PostgreSQL 8.4在OS X的Rails中开发一个应用程序。我需要为应用程序设置数据库,以便标准文本查询不区分大小写。例如:
应返回与以下结果相同的结果:
为了清楚起见,我不想使用:
(1)在where子句或任何其他类型的特殊比较运算符中喜欢
(2)列数据类型或任何其他特殊列索引的citext
(3)任何类型的全文本软件,例如Sphinx
我要做的是设置数据库区域设置以支持不区分大小写的文本比较。我在Mac OS X(10.5 Leopard)上,并且已经尝试将“编码”设置为“LATIN1”,而“归类”和“Ctype”都设置为“en_US.ISO8859-1”。到目前为止没有成功。
任何帮助或建议,我们将不胜感激。
谢谢!
更新
我已经将给出的答案之一标记为正确答案,这是出于对做出回应的人们的尊重。但是,我选择的解决方案与建议的解决方案不同。在进一步检查应用程序之后,只有少数几个实例需要与数据库字段进行不区分大小写的比较,因此,我将为需要区分大小写的字段创建影子数据库字段。例如,name和name_lower。我相信我在网上某个地方遇到过这种解决方案。希望PostgreSQL将允许将来与SQL Server提供的排序规则选项类似的排序规则选项(即DOCI)。
特别感谢所有回应。
最佳答案
您可能需要做一些事情,例如使用列函数来转换您的文本,例如转换为大写-示例:
SELECT * FROM documents WHERE upper(title) = upper('incredible document')
请注意,这可能会破坏使用索引扫描的性能,但是如果出现问题,则可以定义一个包括目标列上的列函数的索引,例如
CREATE INDEX I1 on documents (upper(title))
关于postgresql - 在PostgreSQL数据库中使用特定语言环境的人是否成功,所以文本比较不区分大小写?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1929590/