On Sun, 26 Apr 1998, Bruce Momjian wrote:
> >
> > Seems there's a bug using ESCAPE character (\) on LIKE clause:
> >
> > prova=> create table tmp ( a text);
> > CREATE
> > prova=> insert into tmp values('\\');
> > INSERT 178729 1
> > prova=> select * from tmp where a = '\\';
> > a
> > --
> > \\
> > (1 row)
> >
> > prova=> select * from tmp where a like '%\\%';
> > a
> > -
> > (0 rows)
> >
> > prova=> select * from tmp where a like '%\\\\%';
> > a
> > --
> > \\
> > (1 row)
> >
> > -- how many \ do I have to use? 1, 2, 3, 4 or 5 ???
> >
> > prova=> select * from tmp where a like '%\\\\\%';
> > a
> > --
> > \\
> > (1 row)
> > Jose'
>
> The problem is that that \\ is need to input a backslash, and we support
> \ to escape special characters like %, so \\\\ is need to test for a
> backslash in a LIKE. Is this not standard? I suppose not.
The LIKE standard SQL92 has the keyword ESCAPE to specify a character
as escape, like this:
SELECT * FROM my_table WHERE my_col LIKE '#_pluto' ESCAPE '#';
> Should we remove the special use of \ in LIKE? Comments?
Obviously we need a character escape (back slash or other) to escape
_ or/and %, but before remove use of back slashes we need to have the
LIKE SQL92 syntax.
Jose'