Re: Collation and Case Insensitivity - Mailing list pgsql-novice

From Kenneth Marshall
Subject Re: Collation and Case Insensitivity
Date
Msg-id 20110113151127.GP5474@aart.is.rice.edu
Whole thread Raw
In response to Collation and Case Insensitivity  ("Phillip Smith" <phillip@softworks.com>)
List pgsql-novice
On Thu, Jan 13, 2011 at 02:33:46PM -0000, Phillip Smith wrote:
> Hi,
>
> Im moving over from MS SQL. I've been googling this for ages now and suprisingly cannot find a clear answer.
>
> I want my data in tables to be case insensitive.
>
> This is so i can:
>
> 1. Put keys on natural key fields, for instance a product part number. I product number 'ABC123' inserted i need to
disallow'abc123' to be inserted as a second row. Please don't tell me i have to add another column holding a lowered
versionof the product number. My database is littered with this need and i would end up bloating my table schema. 
>
> 2.  I need to query case insensitively. SELECT * FROM product WHERE product_number = 'ABC123' should return the same
rowas SELECT * FROM product WHERE product_number = 'abc123' 
>
> Is there a database wide collation setting i can make. There are lots of online posts regarding using LOWER function
forquerying. This is a workaround for point (2) but does not remedy point (1) above. 
>
> Many thanks
>
> Phillip
>
> Phillip Smith

There is a citext module that may help:

http://www.postgresql.org/docs/9.0/static/citext.html

Alternatively, you could use a trigger on INSERT/UPDATE to
automatically lower() the incoming data which would allow
(2) to work.

Regards,
Ken

pgsql-novice by date:

Previous
From: "Phillip Smith"
Date:
Subject: Collation and Case Insensitivity
Next
From: Susanne Ebrecht
Date:
Subject: Re: Collation and Case Insensitivity