समस्या यह है कि आपकी सबक्वायरी का परिणाम एक स्ट्रिंग के रूप में व्याख्या किया जाता है, सरणी नहीं। ऐसा इसलिए है क्योंकि ये दोनों रूप शब्दार्थ रूप से भिन्न हैं:
~~ ANY ('...') -- will be interpreted as an array literal
और
~~ ANY (SELECT ...) -- will compare with all query results in turn
तो आप बस लिख सकते हैं:
WHERE lower(name) ~~ ANY
(SELECT DISTINCT '%' || lower(brand) || '%'
FROM my_table
WHERE source = 'Orig')