Re: LIKE predicate and '\' character - Mailing list pgsql-hackers

From Andy Hallam
Subject Re: LIKE predicate and '\' character
Date
Msg-id 9se3tt$1dkl$1@news.tht.net
Whole thread Raw
In response to Re: LIKE predicate and '\' character  (Karel Zak <zakkr@zf.jcu.cz>)
List pgsql-hackers
I have since found out that Postgres treats \ as the default LIKE escape
character. (Courtesy Stephan Szabo)

I will learn to live with this 'feature'.

Thanks.

Andy

"Andy Hallam" <ahm@exel.co.uk> wrote in message
news:9se3qn$1dju$1@news.tht.net...
> Did you actually read my mail posting???
>
> > I sent a previous mail with regard to using the '\' (backslash)
character
> in
> > an SQL SELECT statement.
> > The outcome was that postgres does not escape the '\' itself - I need to
> do
> > it myself before submitting the SQL - fair enough, I now do this.
>
> I already know what you have just tried to explain to me.
>
> My question is not about having to escape a '\' character but the fact
that
> the behaviour is not consistent when using the LIKE predicate. I.e - you
> have to escape the escape when using LIKE.
>
> Andy.
>
>
>
>
>
>
> "Karel Zak" <zakkr@zf.jcu.cz> wrote in message
> news:20011107151110.C6354@zf.jcu.cz...
> > On Wed, Nov 07, 2001 at 12:56:46PM -0000, Andy Hallam wrote:
> >
> >  The PostgreSQL parser "eat" one '\' on arbitrary place in query. You
> >  you want put '\' to some function (operator) you must use '\\'.
> >
> > test=# select '\\';
> > ?column?
> > ----------
> > \
> > (1 row)
> >
> > test=# select '\\\\';
> > ?column?
> > ----------
> > \\
> > (1 row)
> >
> > test=# select 'hello\\pg' like 'hello\\pg';
> > ?column?
> > ----------
> > f
> > (1 row)
> >
> > test=# select 'hello\\pg' like 'hello\\\\pg';
> > ?column?
> > ----------
> >  t
> >  (1 row)
> >
> >         Karel
> >
> >
> > > PostgreSQL - 7.1.3  (installed on Linux 2.4.2-2)
> > > PSQLODBC.DLL - 07.01.0007
> > > Visual C++ - 6.0
> > >
> > > I sent a previous mail with regard to using the '\' (backslash)
> character in
> > > an SQL SELECT statement.
> > > The outcome was that postgres does not escape the '\' itself - I need
to
> do
> > > it myself before submitting the SQL - fair enough, I now do this.
> > >
> > > i.e
> > > instead of
> > >     mydb=# SELECT * FROM users WHERE id = 'WORKGROUP\me';
> > > I now do
> > >     mydb=# SELECT * FROM users WHERE id = 'WORKGROUP\\me';
> > >
> > > BUT, if I use the LIKE predicate I have to escape the escape.
> > >
> > > i.e
> > >     mydb=# SELECT * FROM users WHERE id LIKE 'WORKGROUP\\\\me';
> > >
> > >
> > > Now this must be treated as a bug.
> > > As you can see it is not an error with the PSQLODBC driver as I ran
the
> SQL
> > > from the command line with the same results.
> > > I am presuming that the backend parsing logic around the LIKE
prodicate
> is
> > > ignoring the '\'.
> > >
> > > Is anyone working on this ?. Can anyone send me a fix, as without this
> I'm
> > > screwed.
> > >
> > > Thanks for any help
> > >
> > > Andy.
> > > ahm@exel.co.uk
> > >
> > >
> > >
> > >
> > >
> > >
> > > ---------------------------(end of
broadcast)---------------------------
> > > TIP 2: you can get off all lists at once with the unregister command
> > >     (send "unregister YourEmailAddressHere" to
majordomo@postgresql.org)
> >
> > --
> >  Karel Zak  <zakkr@zf.jcu.cz>
> >  http://home.zf.jcu.cz/~zakkr/
> >
> >  C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>
>




pgsql-hackers by date:

Previous
From: "Andy Hallam"
Date:
Subject: Re: LIKE predicate and '\' character
Next
From: Kevin Jacobs
Date:
Subject: Possible major bug in PlPython (plus some other ideas)