From: | "Andy Hallam" <ahm(at)exel(dot)co(dot)uk> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: LIKE predicate and '\' character |
Date: | 2001-11-08 14:10:09 |
Message-ID: | 9se3qn$1dju$1@news.tht.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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(at)zf(dot)jcu(dot)cz> wrote in message
news:20011107151110(dot)C6354(at)zf(dot)jcu(dot)cz(dot)(dot)(dot)
> 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(at)exel(dot)co(dot)uk
> >
> >
> >
> >
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 2: you can get off all lists at once with the unregister command
> > (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>
> --
> Karel Zak <zakkr(at)zf(dot)jcu(dot)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(at)postgresql(dot)org
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2001-11-08 14:10:44 | Re: 'postgres' flag |
Previous Message | Patrick Welche | 2001-11-08 14:08:57 | Re: 7.2 Beta2 bug report |