Я пытаюсь написать запрос, чтобы проверить, находится ли элемент в массиве строк.
Вот мой простой запрос выбора вместе с выводом
select languages from person limit 3;
{CSS,HTML,Java,JavaScript,Python}
{JavaScript,Python,TensorFlow}
{C++,Python}
Как мне написать запрос, чтобы найти всех людей, у которых «Java» указан в списке языков, которые они знают?
Я пытался следовать синтаксису, но он не работает.
select languages from person where languages @> ARRAY['Java']::varchar[];


попробуй это
select languages from person where 'Java' = ANY (string_to_array(languages , ','))
Вам нужно использовать строковую константу с левой стороны и оператор ANY в столбце массива:
select languages
from person
where 'Java' = any(languages);
Это предполагает, что languages определяется как text[] или varchar[], как показывает ваш образец вывода.
Вы можете искать более одного шаблона, заменяя оператор '=' оператором сопоставления регулярного выражения '~', предшествующим регулярному выражению POSIX, например:
select languages from person where '[Java,Php]' ~ ANY (string_to_array(languages , ','))
Получение этой ошибки - невозможно разрешить '
Java' заданные входные столбцы: