Si se quiere tener un campo de texto que almacene diferentes variables separadas por comas, este segirá siendo un STRING, ¿cómo poder evaluarlo como un ARRAY y saber si existe un valor en específico?
SELECT * FROM tabla_principal WHERE 'valor_string_evaluado' = ANY (string_to_array(campo_string, ','));
El CAST del valor_string_evaluado debe de ser TEXT. Se puede declara de forma implicita al encerrar el valor entre comillas simples o colocarlo de forma explicita, para que no exista ninguna alternativa cuando query evalue el valor. La respuesta a esta comparación será de tipo BOOL => Verdadero o Falso.