Re: search/select case-insensitivly.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



The best way is to always save data in your database in the same format ... 
upper or lower ... then create an index on your field classicaly ...

CREATE INDEX ix_name ON mytable(name);
SELECT name FROM mytable WHERE name = '" . strtolower($Name) ."';

You will ever use the index ... and it's simple to implement ...
You can also easily do an update of your database like :
update mytable set name=lower(name);
to get all the old data in the good format ...
Do not forget to vacuum the table after that !

Regards,

Le Mardi 22 Octobre 2002 10:12, Andrew McMillan a écrit :
> On Tue, 2002-10-22 at 17:01, Zhidian Du wrote:
> > I want a PHP program to search case-insensitivly.
> >
> > for example:
> > select Name from mytable where Name = '$Name';
> >
> >
> > Here $Name is what users' input maybe JOHN, john.  How to let it match
> > John in table and find that record?
>
> Although you can simply do as another poster said and use the ILIKE
> operator, there are a few things you may want to consider.
>
> You can also do something like:
>
> "SELECT name FROM mytable WHERE lower(name) = '" . strtolower($Name) .
> "'; "
>
> This means that PostgreSQL will use an index, if there is an index on
> lower(name):
>
> CREATE INDEX lcname ON mytable( lower(name) );
>
> This will give you the most efficient access if you have many records in
> 'mytable', whereas ILIKE will require a full-table scan.
>
> Regards,
> 					Andrew.

-- 
Hervé Piedvache

Elma Ingénierie Informatique
6 rue du Faubourg Saint-Honoré
F-75008 - Paris - France
Tel. 33-144949901
Fax. 33-144949902


[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux