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

From Andy Hallam
Subject Re: LIKE predicate and '\' character
Date
Msg-id 9se3qn$1dju$1@news.tht.net
Whole thread Raw
In response to Re: LIKE predicate and '\' character  (Karel Zak <zakkr@zf.jcu.cz>)
List pgsql-hackers
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: Jean-Michel POURE
Date:
Subject: Re: [GENERAL] How to optimize a column type change???
Next
From: "Andy Hallam"
Date:
Subject: Re: LIKE predicate and '\' character