I have columns title
, description
, keywords
and I want to search a text in them.
I’m using PostgreSQL.
SELECT title FROM products WHERE ANY(ARRAY(title, description, keywords) like '%test%')
I’m getting error syntax error at or near "ANY"
.
I know I can do it with OR
but I think that would not be the best way to do it.
I think I’m having errors at converting columns to array. Can someone give me an idea?
Thanks!
Advertisement
Answer
Presumably, your goal is to only have the comparison '%test%'
appear once. Here is one method:
WHERE EXISTS (SELECT 1 FROM UNNEST(ARRAY[p.title, p.description, p.keywords]) x WHERE x LIKE '%test%' )
Note that if you using equality, then IN
suffices:
WHERE test IN (p.title, p.description, p.keywords)