Re: BUG #17660: JSONPATH issue using like_regex followed by the && operator
От | Tom Lane |
---|---|
Тема | Re: BUG #17660: JSONPATH issue using like_regex followed by the && operator |
Дата | |
Msg-id | 3367660.1666446526@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | BUG #17660: JSONPATH issue using like_regex followed by the && operator (PG Bug reporting form <noreply@postgresql.org>) |
Ответы |
Re: BUG #17660: JSONPATH issue using like_regex followed by the && operator
|
Список | pgsql-bugs |
PG Bug reporting form <noreply@postgresql.org> writes: > I've found an issue with the like_regex statement when using it together > with another && condition. > In the following example I'm expecting the result will end as: > [{"id":9,"value":"a"}] but instead, it ends with an empty array: > WITH a(attributes) AS ( > SELECT '[{"id":9,"value":"a"},{"id":9,"value":"a$"}]'::jsonb > ) > SELECT jsonb_path_query_array(attributes,'$[*] ? (!(@.id==9 && @.value > like_regex "\$$"))') FROM a I think you're short a backslash: =# WITH a(attributes) AS ( SELECT '[{"id":9,"value":"a"},{"id":9,"value":"a$"}]'::jsonb ) SELECT jsonb_path_query_array(attributes,'$[*] ? (!(@.id==9 && @.value like_regex "\\$$"))') FROM a ; jsonb_path_query_array --------------------------- [{"id": 9, "value": "a"}] (1 row) I believe one level of backslashing gets eaten by the jsonpath parser while parsing the literal, so your version ends as LIKE "$$" which is not different from LIKE "$" and will match every string. regards, tom lane
В списке pgsql-bugs по дате отправления: