在PostgreSQL中存储不区分大小写的varchar

时间:2009-05-02 04:58:00

标签: postgresql collation case-insensitive

我想在SQL表中为我的用户名 varchar 添加一些约束,这样如果存在用户名,则无法创建不同情况下的重复用户名。我怎样才能做到这一点?感谢

编辑:
我正在使用PostgreSQL,一点点语法帮助将不胜感激。

3 个答案:

答案 0 :(得分:22)

来自docs

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

答案 1 :(得分:3)

如果表尚未填充,您可以考虑在进行任何插入之前简单地转换为标准大写或小写,并使该字段成为主键(或者只是具有唯一约束)。如果用户想要在他指定的情况下看到他的用户ID,那么这可能是数据库中的另一列。

更新:根据更新后的标签,我仍然建议我提出的解决方案不再依赖于特定的DBMS。

答案 2 :(得分:3)

请注意,PostgreSQL 8.4(目前为测试版)将有case-insensitive text type