postgres数组字段,选择条件

时间:2016-09-10 20:45:44

标签: postgresql

我有一个包含2个字段的POSTGRES字段 - 整数数组字段和整数字段。

CREATE TABLE test.public.polls (
    "id" serial NOT NULL,
    field_1 _int4,
    field_2 int4 NOT NULL,
    PRIMARY KEY ("id")
);

,值为

enter image description here

1)现在我需要检查字段值{1,2,3}是否在field_1中

这样的事情 -

select * from test.public.polls
where field_1 = ANY ('{1,2,3}'::int[])

但这会引发错误

operator does not exist: integer[] = integer

2)需要检查是否有任何id值= {2,3,4}在field_1

select * from test.public.polls
where field_1 = array(id)

不确定应该是什么语法。

2 个答案:

答案 0 :(得分:2)

使用overlap operator &&

SELECT * 
  FROM polls
 WHERE '{1,2,3}' && field_1

这是SQLFiddle

答案 1 :(得分:1)

由于您的#include <iostream> using namespace std; bool increasing(int arr[], int n); int main() { int arr[20], n; cout << "Enter a set of Increasing/Decreasing numbers (ex. 1 2 3 6 5 4 7 8 9 3 2 1)." << endl; cout << "Press 'Enter' to see results" << endl; while (cin >> n) { for (int i = 0; i <= n; i++) { cin >> arr[i]; } cout << (increasing(arr, n) ? "increasing" : "decreasing") << endl; } return 0; } bool increasing(int arr[], int n) { int x = 0; for (int i = 0; i < n - 1; i++) { if (arr[i] < arr[i + 1]) { x++; } } if (x == n - 1) { return true; } else { return false; } } 似乎是一个数组,因此后续工作应该有效(这称为overlapping):

field_1

对于第二部分,您似乎希望汇总select * from yourtable where field_1 && '{1,2,3}'::int[] 列并检查id中是否存在聚合集中的任何值:

field_1