PostgreSQL Как запросить массив строк


Я пытаюсь написать запрос, чтобы проверить, находится ли элемент в массиве строк.

Вот мой простой запрос выбора вместе с выводом

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[];

Получение этой ошибки - невозможно разрешить 'Java' заданные входные столбцы:

Sandy 22.03.2019 07:40
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
1
5 633
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

попробуй это

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 , ','))

Другие вопросы по теме