Обсуждение: Regular expression problem
Hi... I'm dealing with a regular expression in a check constraint for
many days.... i'm stuck with this...
what I'm doing is adding a check to an existing table on a field called
codigoex1 (varchar(9) )
check (codigoex1 ~* '[a-z]{2,2}')
and I can't get it to work!
I want to validate only input data such as "ar" "Us" "bR" and NOT
something like "rum" "a"
the previous reg. expr. only works like it were ~* '[a-z]{2}' , so, it
ignores the maximum length.
Tanks a lot!
Matias Surdi <matiass@interlap.com.ar> writes:
> Hi... I'm dealing with a regular expression in a check constraint for many
> days.... i'm stuck with this...
>
> what I'm doing is adding a check to an existing table on a field called
> codigoex1 (varchar(9) )
>
> check (codigoex1 ~* '[a-z]{2,2}')
>
> and I can't get it to work!
> I want to validate only input data such as "ar" "Us" "bR" and NOT something
> like "rum" "a"
Use something like '^[a-z]{2}$'
Regards,
Manuel.
Matias Surdi <matiass@interlap.com.ar> writes:
> Manuel Sugawara wrote:
> >Use something like '^[a-z]{2}$'
>
> so, is this a bug????
No it is not. The sintax you are using is not supported.
Regards,
Manuel.
On 24 Oct 2003, Manuel Sugawara wrote:
> Matias Surdi <matiass@interlap.com.ar> writes:
>
> > Manuel Sugawara wrote:
> > >Use something like '^[a-z]{2}$'
> >
> > so, is this a bug????
>
> No it is not. The sintax you are using is not supported.
It certainly seems to work in Postgresql 7.4 beta 4:
create table test2 (info text);
CREATE TABLE
insert into test2 values ('ab');
INSERT 109169538 1
insert into test2 values ('abc');
INSERT 109169539 1
marl8412=# select * from test2 where info ~ '^[a-z]{2}$';info
------ab
Or was there more to that message I wasn't getting?
"scott.marlowe" <scott.marlowe@ihs.com> writes:
> It certainly seems to work in Postgresql 7.4 beta 4:
>
> create table test2 (info text);
> CREATE TABLE
> insert into test2 values ('ab');
> INSERT 109169538 1
> insert into test2 values ('abc');
> INSERT 109169539 1
>
> marl8412=# select * from test2 where info ~ '^[a-z]{2}$';
> info
> ------
> ab
>
> Or was there more to that message I wasn't getting?
He was trying to use '[a-z]{2,2}', which doesn't work in PostgreSQL.
Regards,
Manuel.
On 24 Oct 2003, Manuel Sugawara wrote:
> "scott.marlowe" <scott.marlowe@ihs.com> writes:
>
> > It certainly seems to work in Postgresql 7.4 beta 4:
> >
> > create table test2 (info text);
> > CREATE TABLE
> > insert into test2 values ('ab');
> > INSERT 109169538 1
> > insert into test2 values ('abc');
> > INSERT 109169539 1
> >
> > marl8412=# select * from test2 where info ~ '^[a-z]{2}$';
> > info
> > ------
> > ab
> >
> > Or was there more to that message I wasn't getting?
>
> He was trying to use '[a-z]{2,2}', which doesn't work in PostgreSQL.
Oh, ok. Thanks.
7.4 uses a completely new regex engine, so comparisons
with that will not be valid anyway.
Pre-7.4 regex behaviour is all documented:
Users Guide -> Functions & Operators -> Pattern
Matching
--- "scott.marlowe" <scott.marlowe@ihs.com> wrote:
> On 24 Oct 2003, Manuel Sugawara wrote:
>
> > Matias Surdi <matiass@interlap.com.ar> writes:
> >
> > > Manuel Sugawara wrote:
> > > >Use something like '^[a-z]{2}$'
> > >
> > > so, is this a bug????
> >
> > No it is not. The sintax you are using is not
> supported.
>
> It certainly seems to work in Postgresql 7.4 beta 4:
>
> create table test2 (info text);
> CREATE TABLE
> insert into test2 values ('ab');
> INSERT 109169538 1
> insert into test2 values ('abc');
> INSERT 109169539 1
>
> marl8412=# select * from test2 where info ~
> '^[a-z]{2}$';
> info
> ------
> ab
>
> Or was there more to that message I wasn't getting?
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 2: you can get off all lists at once with the
> unregister command
> (send "unregister YourEmailAddressHere" to
majordomo@postgresql.org)
__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com