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

Pau*_*end 41 string postgresql indexing

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

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

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

Poi*_*nty 61

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

所以:

CREATE UNIQUE INDEX lower_case_username ON users ((lower(username)));
Run Code Online (Sandbox Code Playgroud)

然后查询同样的事情:

SELECT username FROM users WHERE lower(username) = 'bob';
Run Code Online (Sandbox Code Playgroud)

  • @glyph不,Postgresql很聪明,可以识别函数应用程序与索引的定义相匹配.[参考文献](https://www.postgresql.org/docs/9.2/static/indexes-expressional.html) (2认同)

mez*_*zie 9

根据文档,您可以这样做:

CREATE UNIQUE INDEX lower_title_idx ON films ((lower(title)));
Run Code Online (Sandbox Code Playgroud)