Re: limitation using LIKE on ANY(array)
От | Tom Lane |
---|---|
Тема | Re: limitation using LIKE on ANY(array) |
Дата | |
Msg-id | 5275.1143217555@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | limitation using LIKE on ANY(array) (K C Lau <kclau60@netvigator.com>) |
Ответы |
Re: limitation using LIKE on ANY(array)
|
Список | pgsql-performance |
K C Lau <kclau60@netvigator.com> writes: > Indeed, I get rejected even with: > .. WHERE ANY(array) = 'xx' > It would only work as documented in the manual (8.10.5): > SELECT * FROM sal_emp WHERE 10000 = ANY (pay_by_quarter); That's not changing any time soon; the SQL spec defines only the second syntax for ANY, and I believe there would be syntactic ambiguity if we tried to allow the other. > With 8.1.3, I get an error when trying to do this on a Text[] column : > .. WHERE ANY(array) LIKE 'xx%' If you're really intent on doing that, make an operator for "reverse LIKE" and use it with the ANY on the right-hand side. regression=# create function rlike(text,text) returns bool as regression-# 'select $2 like $1' language sql strict immutable; CREATE FUNCTION regression=# create operator ~~~ (procedure = rlike, leftarg = text, regression(# rightarg = text, commutator = ~~); CREATE OPERATOR regression=# select 'xx%' ~~~ any(array['aaa','bbb']); ?column? ---------- f (1 row) regression=# select 'xx%' ~~~ any(array['aaa','xxb']); ?column? ---------- t (1 row) regression=# regards, tom lane
В списке pgsql-performance по дате отправления: