| From: | Arup Rakshit <aruprakshit1987(at)outlook(dot)com> |
|---|---|
| To: | pgsql-general <pgsql-general(at)postgresql(dot)org> |
| Subject: | Re: filter records by substring match of an postgresql array column |
| Date: | 2017-11-08 12:28:56 |
| Message-ID: | 7F8673F7-CFF5-4C3E-B5ED-1C80BE505B5A@outlook.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
I enabled the extension `pg_trgm`.
I thought to query like:
SELECT
"videos".*
FROM
"videos"
WHERE
(
array_to_string(tags, ', ') ilike '%web shorts%'
)
AND EXISTS
(
SELECT
FROM
unnest(tags) AS u(val)
WHERE
u.val ILIKE '%web shorts%'
)
;
And to do I wanted to add an index like:
CREATE INDEX trgm_idx_video_tags ON videos USING gist ((array_to_string(tags, ', ')) gist_trgm_ops)
But on running this I get an error as:
ERROR: functions in index expression must be marked IMMUTABLE
How can I fix this?
> On Nov 8, 2017, at 4:02 PM, Arup Rakshit <aruprakshit1987(at)outlook(dot)com> wrote:
>
> Hi,
>
> I do have a videos table, and it has a column called `tags` of type array. I would like to select all videos where any string inside tag column matches a given substring. What method should I use? The *Contains `@>` operator* will do full string comparisons as far as I understood.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | rammohan ganapavarapu | 2017-11-08 16:17:01 | Re: Can master and slave on different PG versions? |
| Previous Message | Jeff Janes | 2017-11-08 11:49:51 | Re: filter records by substring match of an postgresql array column |