inconsistent functionality with LIKE operator

Started by Phuong Maabout 25 years ago3 messagesgeneral
Jump to latest
#1Phuong Ma
pma@commandprompt.com

I'm using PostgreSQL version 7.1, and I'm having trouble with the LIKE
statement. How would I find the value "a\bc"? I tried using the
backslash to escape it: LIKE 'a\\b%';

If I specify: LIKE 'a\\bc', then it works, but if I wanted it to look
for consecetive characters after the c, using the %, then it returns
other values besides what I'm looking for.

I also have the same problem with percent (%). I have a test string
with the value "ab%c", and I want to look for that using LIKE. I tried:
LIKE 'ab\%c', LIKE 'ab%%', and LIKE 'ab\%_', but these statements not
only returned what I was looking for, but also other values:
"abc","ABC", and "Abc".

Phuong

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Phuong Ma (#1)
Re: [SQL] inconsistent functionality with LIKE operator

Phuong Ma <pma@commandprompt.com> writes:

I'm using PostgreSQL version 7.1, and I'm having trouble with the LIKE
statement. How would I find the value "a\bc"? I tried using the
backslash to escape it: LIKE 'a\\b%';

I think you need four backslashes. The string-literal parser eats one
level of backslashes, but you need the pattern that arrives at LIKE
to look like "a\\b%".

BTW, "PostgreSQL version 7.1" does not exist yet.

regards, tom lane

#3will trillich
will@serensoft.com
In reply to: Phuong Ma (#1)
Re: inconsistent functionality with LIKE operator

On Thu, Mar 29, 2001 at 08:25:30AM +0000, Phuong Ma wrote:

I'm using PostgreSQL version 7.1, and I'm having trouble with the LIKE
statement. How would I find the value "a\bc"? I tried using the
backslash to escape it: LIKE 'a\\b%';

If I specify: LIKE 'a\\bc', then it works, but if I wanted it to look
for consecetive characters after the c, using the %, then it returns
other values besides what I'm looking for.

I also have the same problem with percent (%). I have a test string
with the value "ab%c", and I want to look for that using LIKE. I tried:
LIKE 'ab\%c', LIKE 'ab%%', and LIKE 'ab\%_', but these statements not
only returned what I was looking for, but also other values:
"abc","ABC", and "Abc".

with LIKE, '%' means "anything" just as /.*/ does in a perl
regex; and '_' means "any character" just as /./ does in perl.

by default.

you can change the escape char, tho --

http://google.com/search?as_q=like+select+escape&amp;as_sitesearch=postgresql.org

--
does a brain cell think?

will@serensoft.com
http://sourceforge.net/projects/newbiedoc -- we need your brain!
http://www.dontUthink.com/ -- your brain needs us!