BUG #14688: Wrong results in LIKE operation on JSON Type

Started by Nonamealmost 9 years ago2 messagesbugs
Jump to latest
#1Noname
nblxa@mail.ru

The following bug has been logged on the website:

Bug reference: 14688
Logged by: Ilya Kopylov
Email address: nblxa@mail.ru
PostgreSQL version: 9.6.0
Operating system: Windows 8.1
Description:

When JSON contains '\\' symbol, then operator '=' works well, but operator
'LIKE' return wrong result.

SELECT '{"Name":"Domen\\Ivan"}'::json ->> 'Name' = 'Domen\Ivan'; -- yields
true

SELECT '{"Name":"Domen\\Ivan"}'::json ->> 'Name' LIKE 'Domen\Ivan'; --
yields false

SELECT '{"Name":"Domen\\Ivan"}'::json ->> 'Name' LIKE 'Domen\\Ivan'; --
yields true

When I search with 'LIKE' operator and adding '\' symbol, when got result. I
think whis is bug.

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: BUG #14688: Wrong results in LIKE operation on JSON Type

nblxa@mail.ru writes:

When JSON contains '\\' symbol, then operator '=' works well, but operator
'LIKE' return wrong result.

SELECT '{"Name":"Domen\\Ivan"}'::json ->> 'Name' = 'Domen\Ivan'; -- yields
true

SELECT '{"Name":"Domen\\Ivan"}'::json ->> 'Name' LIKE 'Domen\Ivan'; --
yields false

SELECT '{"Name":"Domen\\Ivan"}'::json ->> 'Name' LIKE 'Domen\\Ivan'; --
yields true

I think you've forgotten that backslash is an escape character in LIKE
patterns. You could use ... LIKE 'Domen\Ivan' ESCAPE '' if you don't
want that behavior.

https://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-LIKE

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs