On Tue, Jan 17, 2017 at 1:45 PM, Thomas Kellerer <spam_ea...@gmx.net> wrote:

> Tom Lane schrieb am 17.01.2017 um 13:41:
> > Thomas Kellerer <spam_ea...@gmx.net> writes:
> >> So my question is: Is there any way to specify an alternate wildcard
> escape when using LIKE ANY (..)?
> >
> > No, not with ESCAPE.  [ manfully resists temptation to run down SQL
> > committee's ability to design composable syntax ... oops ]
> >
> > You could do what PG does under the hood, which is to run the pattern
> > through like_escape():
> >
> >  select *
> >    from some_table
> >    where name like any (array[like_escape('foo_bar%', '/'),
> >                               like_escape('bar_foo%', '/')]);
> >
> > If that seems too verbose, maybe build a function to apply like_escape
> > to each member of an array.
>
> OK, thanks.
>
> I was trying to avoid to actually change the input list, but apparently
> there is no other way.
>

If you don't want to touch the array, you can do something like this:

select *
from tablename as t
where exists (select from unnest($1) as u(x) where t.name like u.x escape
'/');
-- 

Vik Fearing                                          +33 6 46 75 15
36http://2ndQuadrant.fr     PostgreSQL : Expertise, Formation et
Support

Reply via email to