sunrelax
sunrelax

Reputation: 65

LIKE clause with \ character in PostgreSQL

I have this behavior in PostgreSQL 9.3:

-- (1) this "doesn't" work
select 't\om' like '%t\om%'
-- result = false

-- (2) this works
select 't/om' like '%t/om%'
-- result = true

Why is the (1) query result false? What is the best way to get true in (1) query?

Upvotes: 3

Views: 2864

Answers (2)

user330315
user330315

Reputation:

The \ has no special meaning in SQL except inside the condition for the LIKE operator where it can be used to escape the wildcard characters.

But you can define a different escape character for LIKE which then makes the \ a "normal" character:

select 't\om' like '%t\om%' escape '#';

edit

As Sunrelax has commented, you can also use an empty string as the "escape" sequence:

select 't\om' like '%t\om%' escape '';

Upvotes: 6

msanford
msanford

Reputation: 12247

\ is an escape sequence, so you need to escape it, too:

select 't\om' like '%t\\om%';

There is also a configuration option you can set. See Escaping backslash in Postgresql

Upvotes: 2

Related Questions