PSQL 不区分大小写的 INDEX lower() 不起作用

PSQL case insensitive INDEX lower() doesn't work

目前,我正在致力于在列中制作数据,"filename",以便在搜索或比较时不区分大小写。 在 files 数据库中,我有名称为 SAMPLE.txt 和 sAMple.Txt 的文件。 ... 我想在执行时获取所有同名文件

SELECT * from files where filename='sample.txt'

所以,我通过这个命令做了一个索引...

CREATE INDEX files_lower_fnames_idx ON files ((lower(filename)));

创建成功。 但是在执行...

SELECT * from files where filename='sample.txt'

它仍然返回 0 行。

我错过了什么吗? 谢谢你的帮助。

it still returned 0 rows.

创建索引对查询结果没有影响,仅性能查询。如果它在创建索引之前返回 0 行,它也应该在之后返回。

我不能肯定地说 为什么 它返回 0 行,因为您没有在 table 中显示数据。但是如果是你描述的那么

SELECT * from files where filename='sample.txt'

不匹配。您需要一个 citext 列,或者执行不区分大小写的查询,例如

SELECT * from files where lower(filename)='sample.txt'

此查询应该能够使用您创建的索引 运行 更快。