Обсуждение: LIKE operator and string comparison
I used the following SQL code to match '\foo\bar' SELECT text FROM test WHERE text LIKE '\\\\foo\\\\%' But if I choose to use string comparison, instead of 4 escape characters, I only need 2. SELECT text FROM test WHERE text = '\\foo\\bar' Why is that? I am using PostgreSQL 7.4, and the SQL code was entered through psql. Thanks! Wei
Wei Weng <wweng@kencast.com> writes:
> But if I choose to use string comparison, instead of 4 escape characters, I
> only need 2.
> Why is that?
Backslash is an escape character for LIKE.
regards, tom lane
Tom Lane wrote: > Wei Weng <wweng@kencast.com> writes: > >>But if I choose to use string comparison, instead of 4 escape characters, I >>only need 2. > > >>Why is that? > > > Backslash is an escape character for LIKE. > > regards, tom lane > > What about in regular strings? I do need to use backslash to escape the other backslash in order to get the '\'. Why isn't that the case in LIKE operation? Thanks Wei
Wei Weng <wweng@kencast.com> writes:
> What about in regular strings? I do need to use backslash to escape the
> other backslash in order to get the '\'. Why isn't that the case in LIKE
> operation?
It is. You write four backslashes in order to describe a string
constant value containing two backslashes. When the LIKE code sees
that, it interprets it as one quoted backslash.
See LIKE ... ESCAPE if you'd like to use a different escape character
in the LIKE pattern.
regards, tom lane