Best way to store case-insensitive data?

From: Mike Christensen <mike(at)kitchenpc(dot)com>
To: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Best way to store case-insensitive data?
Date: 2010-06-10 20:50:23
Message-ID: AANLkTin-73Ekq7RUzmLibndS0XkgTFY2WD3buPREcYJD@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I have a column called "email" that users login with, thus I need to
be able to lookup email very quickly. The problem is, emails are
case-insensitive. I want foo(at)bar(dot)com to be able to login with
FOO(at)Bar(dot)com as well. There's two ways of doing this, that I can see:

1) Every time I lookup an email in the database, do a case-insensitive
ilike, or cast both sides with LOWER(). I think both are slow,
correct?
2) Every time the user updates or saves their email, store it in
lowercase, and every time I lookup an email, pass in a lowercase
email. This is somewhat of a bug farm because one might miss some
little spot in a piece of code where an email is compared or updated.

Is there any way to tell postgres to always store data in lowercase
form, or just have a flat out case-insensitive column? Thanks!

Mike

Responses

Browse pgsql-general by date

  From Date Subject
Next Message John Gage 2010-06-10 20:57:36 Re: Cognitive dissonance
Previous Message Jim.Gray 2010-06-10 20:43:20 Re: PL/pgSQL nested functions