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'
此查询应该能够使用您创建的索引 运行 更快。
目前,我正在致力于在列中制作数据,"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'
此查询应该能够使用您创建的索引 运行 更快。