Re: Using regular expressions in LIKE - Mailing list pgsql-general

From Együd Csaba
Subject Re: Using regular expressions in LIKE
Date
Msg-id 004901c3db3c$9d1c3ca0$230a0a0a@compaq
Whole thread Raw
In response to Re: Using regular expressions in LIKE  (<terry@ashtonwoodshomes.com>)
List pgsql-general
Hi Terry & Nick,
thank you very much for your help. My lack of comprehension is because of my
lack of knowladge of regular expressions.

=====================================================
tgr=# \d t_me30
                Table "public.t_me30"
    Column    |           Type           | Modifiers
--------------+--------------------------+-----------
 fomeazon     | integer                  |
 mertido      | character(16)            |
 ertektipus   | character(10)            |
 hetnap       | character(1)             |
 impulzusszam | double precision         |
 mertertek    | double precision         |
 merttartam   | integer                  |
 utmodido     | timestamp with time zone |
Indexes:
    "idx_t_me30_ertektipus" btree (ertektipus)
    "idx_t_me30_fomeazon" btree (fomeazon)
    "idx_t_me30_mertido" btree (mertido)
    "idx_t_me30_mertido2" btree (mertido bpchar_pattern_ops)
    "idx_t_me30_utmodido" btree (utmodido)
=====================================================

1. Using Terry's query it didn't work because I tried to used LIKE's <any
one character> operator "_":
   select * from t_me30 where mertido ~ '2003-12-17___:(15|30)'; -- It
results an empty set.

2. Using Nick's query "select * from t_me30 where mertido ~ '^2003-12-17
([0-9]{2}):(15|30)';" it worked fine and fast.

Nick, I can understand now the meaning of your regular expression. Just a
question: why is it required to indicate the begining of the value by "^"?
Wouldn't it be clear for the interpreter.
Is there any other way (simpler) to indicate that 3-4 irrelevant character
in the centre of the value - I mean something like I tried first ("_")?

Again, many thanks for your help and patience!

Have a nice day, good bye,
-- Csaba


> -----Original Message-----
> From: pgsql-general-owner@postgresql.org
> [mailto:pgsql-general-owner@postgresql.org]On Behalf Of
> terry@ashtonwoodshomes.com
> Sent: 2004. január 14. 14:32
> To: csegyud@vnet.hu; 'Pgsql-General@Postgresql.Org (E-mail)'
> Subject: Re: [GENERAL] Using regular expressions in LIKE
>
>
> Well, if one reads between the lines I think it gives you all
> you need, but
> here is an example to show you:
> devtest3=# select 'test' where 'abcd12' ~ 'abcd(12|34)';
>  ?column?
> ----------
>  test
> (1 row)
>
> devtest3=# select 'test' where 'abcd34' ~ 'abcd(12|34)';
>  ?column?
> ----------
>  test
> (1 row)
>
> devtest3=# select 'test' where 'abcd56' ~ 'abcd(12|34)';
>  ?column?
> ----------
> (0 rows)
>
> Perhaps what is confusing you is you are trying to use a LIKE
> statement.
> DON'T do that:  SQL compliant LIKE statements are *not*
> regular expressions.
> If you really want SQL compliant  regular expressions use the
> SQL statement
> SIMILAR TO  (I believe SIMILAR TO is SQL compliant but not
> 100% positive)
>
> HOWEVER:  Unless you really want to use SIMILAR TO, I would
> use the POSIX
> operators ~, ~*, !~ and !~*, POSIX is more standardized/supported, and
> sometimes can offer power one needs that is not available in
> other pattern
> matching (although I have no specific examples of
> shortcomings in SIMILAR TO
> as I don't use it anyway...)
>
> Terry Fielder
> Manager Software Development and Deployment
> Great Gulf Homes / Ashton Woods Homes
> terry@greatgulfhomes.com
> Fax: (416) 441-9085
>
>
> > -----Original Message-----
> > From: pgsql-general-owner@postgresql.org
> > [mailto:pgsql-general-owner@postgresql.org]On Behalf Of Együd Csaba
> > Sent: Wednesday, January 14, 2004 8:16 AM
> > To: terry@ashtonwoodshomes.com; 'Pgsql-General@Postgresql.Org
> > (E-mail)'
> > Subject: Re: [GENERAL] Using regular expressions in LIKE
> >
> >
> > Hi Terry,
> > thanks for your ansver. I've already read this page but I
> > couldn't find out
> > if I can do such things or not. And if I can than how. So if
> > you can suggest
> > me some additional manual pages regarding regular expressions
> > can be used in
> > LIKE statements, please write me.
> >
> > I don't know where to find it in the manual... :(
> >
> > Thank you very much,
> > -- Csaba Együd
> >
> >
> > > -----Original Message-----
> > > From: terry@greatgulfhomes.com [mailto:terry@greatgulfhomes.com]On
> > > Behalf Of terry@ashtonwoodshomes.com
> > > Sent: 2004. január 14. 12:51
> > > To: csegyud@vnet.hu; 'Pgsql-General@Postgresql.Org (E-mail)'
> > > Subject: RE: [GENERAL] Using regular expressions in LIKE
> > >
> > >
> > > Don't be afraid to read the manual:
> > >
> > > http://www.postgresql.org/docs/current/static/functions-matchi
> > > ng.html#FUNCTI
> > > ONS-SQL99-REGEXP
> > >
> > > http://www.postgresql.org/docs/current/static/functions-matchi
> > > ng.html#FUNCTI
> > > ONS-POSIX-REGEXP
> > >
> > > Terry Fielder
> > > Manager Software Development and Deployment
> > > Great Gulf Homes / Ashton Woods Homes
> > > terry@greatgulfhomes.com
> > > Fax: (416) 441-9085
> > >
> > >
> > > > -----Original Message-----
> > > > From: pgsql-general-owner@postgresql.org
> > > > [mailto:pgsql-general-owner@postgresql.org]On Behalf Of
> > Együd Csaba
> > > > Sent: Wednesday, January 14, 2004 6:43 AM
> > > > To: Pgsql-General@Postgresql.Org (E-mail)
> > > > Subject: [GENERAL] Using regular expressions in LIKE
> > > >
> > > >
> > > > Hi All,
> > > > I'd like to "compress" the following two filter expressions
> > > into one -
> > > > assuming that it makes sense regarding query execution
> > performance.
> > > >
> > > > ... where (adate LIKE "2004.01.10 __:30" or adate LIKE
> > > > "2004.01.10 __:15")
> > > > ...
> > > >
> > > > into something like this:
> > > >
> > > > ... where adate LIKE "2004.01.10 __:(30/15)" ...
> > > >
> > > > which means that I need only those rows which has an "adate"
> > > > field holding
> > > > dates on 2004.01.10 every 30 or 15 minutes at the end. Is it
> > > > possible to use
> > > > some regular expressions or is it worth at all talking about?
> > > >
> > > > thanks,
> > > > -- Csaba
> > > >
> > > > ----------------------------------------
> > > > Együd Csaba
> > > > csegyud@vnet.hu
> > > > IN-FO Studio Bt.
> > > > tel/fax: +36-23-545-447, +36-23-382-447
> > > > mobil:   +36-23-343-8325
> > > >
> > > >
> > > > ---------------------------(end of
> > > > broadcast)---------------------------
> > > > TIP 8: explain analyze is your friend
> > > >
> > >
> > > -- Incoming mail is certified Virus Free.
> > > Checked by AVG Anti-Virus (http://www.grisoft.com).
> > > Version: 7.0.211 / Virus Database: 261 - Release Date:
> 2004. 01. 13.
> > >
> >
> >
> > ---------------------------(end of
> > broadcast)---------------------------
> > TIP 6: Have you searched our list archives?
> >
> >                http://archives.postgresql.org
> >
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
>                http://www.postgresql.org/docs/faqs/FAQ.html
>
>
>
> -- Incoming mail is certified Virus Free.
> Checked by AVG Anti-Virus (http://www.grisoft.com).
> Version: 7.0.211 / Virus Database: 261 - Release Date: 2004. 01. 13.
>


pgsql-general by date:

Previous
From: "Uwe C. Schroeder"
Date:
Subject: Re: what we need to use postgresql in the enterprise
Next
From: "Uwe C. Schroeder"
Date:
Subject: Re: Postgress and MYSQL