如何在PostgreSQL中仅基于小写创建索引?

时间:2010-10-20 16:19:15

标签: string postgresql indexing

我如何仅根据小写设置索引?

即使实际字段包含大写和小写字母。

此外,我可以运行查询并仅返回小写索引值吗?

4 个答案:

答案 0 :(得分:50)

您可以创建索引并将字段转换为大写或小写。然后当你进行查询时,你可以做同样的转换,它会做正确的事情。

所以:

CREATE UNIQUE INDEX lower_case_username ON users ((lower(username)));

然后查询同样的事情:

SELECT username FROM users WHERE lower(username) = 'bob';

答案 1 :(得分:8)

根据the docs,你可以这样做:

CREATE UNIQUE INDEX lower_title_idx ON films ((lower(title)));

答案 2 :(得分:3)

CREATE UNIQUE INDEX my_index_name ON my_table (LOWER(my_field));

答案 3 :(得分:0)

您也可以将其用于通配符搜索:

CREATE INDEX IF NOT EXISTS foo_table_bar_field ON foo_table(lower(username))

查询如下:

SELECT * FROM foo_table WHERE lower(username) like 'bob%'