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

发布于 2024-09-28 22:32:23 字数 78 浏览 2 评论 0原文

我如何设置仅基于小写的索引?

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

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

How would I set up an index based on lower case only?

Even though the actual field contains both upper and lower case letters.

Also, can I run a query and have only the lower case index value returned?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

顾铮苏瑾 2024-10-05 22:32:23

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

所以:

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

然后查询同样的事情:

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

You can create the index and transform the field to upper- or lower-case. Then when you do your queries, you can do the same transform and it'll do the right thing.

So:

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

Then query for the same thing:

SELECT username FROM users WHERE lower(username) = 'bob';
非要怀念 2024-10-05 22:32:23

根据 文档 你可以这样做:

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

According to the docs you can do this:

CREATE UNIQUE INDEX lower_title_idx ON films ((lower(title)));
夜血缘 2024-10-05 22:32:23

您还可以使用它进行通配符搜索:

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

像这样查询:

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

You can also use this for wildcard searches:

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

Query like so:

SELECT * FROM foo_table WHERE lower(username) like 'bob%'
焚却相思 2024-10-05 22:32:23
CREATE UNIQUE INDEX my_index_name ON my_table (LOWER(my_field));
CREATE UNIQUE INDEX my_index_name ON my_table (LOWER(my_field));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文