Обсуждение: Proper quoting of \e ?
Hello !
We have a database in SQL_ASCII in postgres 7.2.1 which contains among
other information document titles which are automatically retrieved.
I took care of quoting "`" but recently stumpled about "\e" which I
have problems working with. Example (in psql, but in php it is the same):
SELECT title from written_by where title like 'An equation of state {\%';
title
-------------------------------------------------------------------------------------------------
An equation of state {\em \`a la} Carnahan-Starling for a five-dimensional fluid of hard hyperspheres
(1 row)
works, but if I take one character more (or, later, the entire title),
it does not:
SELECT title from written_by where title like 'An equation of state {\e%';
title
-------
(0 rows)
I tried various variations (like \\e and simmilar) and looked through
the interactive docs but did not find anything.
Unfortunately I could not search through the list archives because of
some problems with the backend database.
Thanks for any pointers
Helge
--
Helge Kreutzmann, Dipl.-Phys. Helge.Kreutzmann@itp.uni-hannover.de gpg signed mail preferred gpg-key:
fingerkreutzm@rigel.itp.uni-hannover.de 64bit GNU powered http://www.itp.uni-hannover.de/~kreutzm
Help keep free software "libre": http://www.freepatents.org/
--
Helge Kreutzmann, Dipl.-Phys. Helge.Kreutzmann@itp.uni-hannover.de gpg signed mail preferred gpg-key:
fingerkreutzm@rigel.itp.uni-hannover.de 64bit GNU powered http://www.itp.uni-hannover.de/~kreutzm
Help keep free software "libre": http://www.freepatents.org/
Helge Kreutzmann wrote:
-- Start of PGP signed section.
> Hello !
> We have a database in SQL_ASCII in postgres 7.2.1 which contains among
> other information document titles which are automatically retrieved.
> I took care of quoting "`" but recently stumpled about "\e" which I
> have problems working with. Example (in psql, but in php it is the same):
>
> SELECT title from written_by where title like 'An equation of state {\%';
> title
> -------------------------------------------------------------------------------------------------
> An equation of state {\em \`a la} Carnahan-Starling for a five-dimensional fluid of hard hyperspheres
> (1 row)
>
> works, but if I take one character more (or, later, the entire title),
> it does not:
>
> SELECT title from written_by where title like 'An equation of state {\e%';
I noticed you escaped the % in the first query, but not the second. No
idea how that effects things.
-- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610)
853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill,
Pennsylvania19026
On Thu, Apr 25, 2002 at 11:47:16AM -0400, Bruce Momjian wrote:
> > I took care of quoting "`" but recently stumpled about "\e" which I
> > have problems working with. Example (in psql, but in php it is the same):
> >
> > SELECT title from written_by where title like 'An equation of state {\%';
> > title
> > -------------------------------------------------------------------------------------------------
> > An equation of state {\em \`a la} Carnahan-Starling for a five-dimensional fluid of hard hyperspheres
> > (1 row)
> >
> > works, but if I take one character more (or, later, the entire title),
> > it does not:
> >
> > SELECT title from written_by where title like 'An equation of state {\e%';
>
> I noticed you escaped the % in the first query, but not the second. No
> idea how that effects things.
Well, the "\" is part of the strings to be outputed, so I did not
intend to quota anything. If I replace \ to \\ in my first query, I
get also no result.
Greetings
Helge
--
Helge Kreutzmann, Dipl.-Phys. Helge.Kreutzmann@itp.uni-hannover.de gpg signed mail preferred gpg-key:
fingerkreutzm@rigel.itp.uni-hannover.de 64bit GNU powered http://www.itp.uni-hannover.de/~kreutzm
Help keep free software "libre": http://www.freepatents.org/
Helge Kreutzmann wrote:
> Well, the "\" is part of the strings to be outputed, so I did not
> intend to quota anything. If I replace \ to \\ in my first query, I
> get also no result.
>
I think you need 4 '\'s:
test=# create table written_by(title text);
CREATE
test=# insert into written_by values('An equation of state {\\em \\\`a
la} Carnahan-Starling');
INSERT 16661 1
test=# select * from written_by; title
----------------------------------------------------- An equation of state {\em \`a la} Carnahan-Starling
(1 row)
test=# SELECT title from written_by where title like 'An equation of
state {\\\\e%'; title
----------------------------------------------------- An equation of state {\em \`a la} Carnahan-Starling
(1 row)
This is because the string literal parser reduces '\\\\' to '\\', and
then the backend function which implements LIKE interprets '\\' as '\'.
HTH,
Joe