PostgreSQL: использование ANY для нескольких значений - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь использовать ЛЮБУЮ функцию PostgreSQL для поиска значения в столбце типа integer массива.

Мой SQL:

SELECT
    *
FROM
    company_employee_contacts
WHERE
    corporate_complaint_type_ids = ANY(ARRAY[1,3]::integer[])

Но это дает мне ошибку ниже:

ОШИБКА: оператор не существует: целое число [] = целое число

Может кто-нибудь сказать мне, почему я получаю эту ошибку, когда я ее печатаю?

1 Ответ

0 голосов
/ 03 июля 2018

, потому что corporate_complaint_type_ids не целое число, а массив целых чисел ... Вы не можете:

select '{2,3,4}'::int[] = ANY(ARRAY[1,3]::integer[]);
ERROR:  operator does not exist: integer[] = integer
LINE 1: select '{2,3,4}'::int[] = ANY(ARRAY[1,3]::integer[]);

Вместо этого вы можете проверить, перекрываются ли массивы :

postgres@pond93# select '{2,3,4}'::int[] && ARRAY[1,3]::integer[];
 ?column?
----------
 t
(1 row)

или вы можете проверить одно значение массива по отношению к ЛЮБОМУ (массиву):

postgres@pond93# select ('{2,3,4}'::int[])[1] = ANY(ARRAY[1,3]::integer[]);
 ?column?
----------
 f
(1 row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...