PostgreSQL:对多个值使用 ANY
PostgreSQL : Use of ANY for multiple values
我正在尝试使用 PostgreSQL 的 ANY 函数从数组整数类型列中搜索值。
我的SQL:
SELECT
*
FROM
company_employee_contacts
WHERE
corporate_complaint_type_ids = ANY(ARRAY[1,3]::integer[])
但它给我以下错误:
ERROR: operator does not exist: integer[] = integer
谁能告诉我为什么在进行类型转换时出现此错误?
因为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[]);
相反,您可以检查数组 overlap:
postgres@pond93# select '{2,3,4}'::int[] && ARRAY[1,3]::integer[];
?column?
----------
t
(1 row)
或者您可以根据 ANY(array) 检查一个数组值:
postgres@pond93# select ('{2,3,4}'::int[])[1] = ANY(ARRAY[1,3]::integer[]);
?column?
----------
f
(1 row)
我正在尝试使用 PostgreSQL 的 ANY 函数从数组整数类型列中搜索值。
我的SQL:
SELECT
*
FROM
company_employee_contacts
WHERE
corporate_complaint_type_ids = ANY(ARRAY[1,3]::integer[])
但它给我以下错误:
ERROR: operator does not exist: integer[] = integer
谁能告诉我为什么在进行类型转换时出现此错误?
因为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[]);
相反,您可以检查数组 overlap:
postgres@pond93# select '{2,3,4}'::int[] && ARRAY[1,3]::integer[];
?column?
----------
t
(1 row)
或者您可以根据 ANY(array) 检查一个数组值:
postgres@pond93# select ('{2,3,4}'::int[])[1] = ANY(ARRAY[1,3]::integer[]);
?column?
----------
f
(1 row)