CREATE function lower(varchar) returns text as 'lower' language 'internal'
with (iscachable);
It's a bit slower than if it was actually in the backend but it's a very
tiny difference. I spoke to Tom Lane about this, it's on the TODO list I
believe for 7.1. In the meantime the above will work great..
- Mitch
"The only real failure is quitting."
----- Original Message -----
From: Alex Guryanow <gav@nlr.ru>
To: <pgsql-sql@postgresql.org>
Sent: Wednesday, May 17, 2000 3:51 AM
Subject: [SQL] lower() for varchar data by creating an index
> Hi,
>
> I have a table called t1 with field f1 of type varchar(40):
>
> CREATE TABLE t1 (f1 varchar(40));
>
> To make a case insensitive search I build the query like
>
> SELECT f1 FROM t1 WHERE lower( f1 ) LIKE 'alex%';
>
> This works fine. But when I try to make an index to speed up the query
using the command
>
> CREATE INDEX t1_f1_idx ON t1 (lower(f1));
>
> I receive the following error:
>
> ERROR: DefineIndex: function 'lower(varchar)' does not exist
>
> Why by executing the query the function 'lower(varchar)' exists and by
creating the index don't?
>
> I use Postgres 7.0.
>
> Best regards,
> Alex
>
>
>