Re: bug with RE - Mailing list pgsql-bugs

From Stephan Szabo
Subject Re: bug with RE
Date
Msg-id 20070726080335.M12817@megazone.bigpanda.com
Whole thread Raw
In response to bug with RE  (Тучков Михаил<mtuchkov@ntrlab.ru>)
List pgsql-bugs
On Thu, 26 Jul 2007, [UTF-8] =D0=A2=D1^C=D1^G=D0=BA=D0=BE=D0=B2 =D0^\=D0=B8=
=D1^E=D0=B0=D0=B8=D0=BB wrote:

> Please, help me!
> My code:
> "IF char_length(substring(str from '^[a-zA-Z]*://'))=3D0 THEN
>    str:=3D 'http://'||str;
> END IF;"
>
> If str=3D http://www.msn.com then nothing happen
> (all is OK), but if str=3D just www.msn.com then nothing happen too!
>
> Why?


According to:
 http://www.postgresql.org/docs/8.2/interactive/functions-matching.html
a non-match returns NULL, whose char_length is also NULL.

Using one of the regexp operators ~ or ~* would probably be easier, but if
you really wanted to do this with substring, you should be checking for no
match, not a 0 length match.

pgsql-bugs by date:

Previous
From: Magnus Hagander
Date:
Subject: Re: BUG #3487: regular exp
Next
From: Stephen Frost
Date:
Subject: psql \COPY accepts multiple NULL AS