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: | Raw Message | Whole Thread | 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 |