Обсуждение: LIKE operator and string comparison

Поиск
Список
Период
Сортировка

LIKE operator and string comparison

От
Wei Weng
Дата:
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


Re: LIKE operator and string comparison

От
Tom Lane
Дата:
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


Re: LIKE operator and string comparison

От
Wei Weng
Дата:
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



Re: LIKE operator and string comparison

От
Tom Lane
Дата:
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