选择其中数组包含Postgres中给定列表中的值的所有行

时间:2018-01-29 11:02:23

标签: sql postgresql

我有一个带整数数组列的表。我想选择包含给定列表中至少一个int值的所有行。

E.g。

template<class K, class D>
typename AVL<K, D>::tree_node* AVL<K, D>::Select(tree_node* p, int r,
    int *sum) {
 if (!p)
    return NULL;
 if (r == 0) {
    *sum += p->getSub();
    return p;
  }
 if (p->left) {
    if (p->left->getW() == r - 1) {
        *sum = *sum + p->getSub() - p->left->getSub() - p->Key();
        return p;
    }
    if (p->left->getW() > r - 1) {
        *sum = *sum + p->getSub() - p->left->getSub();
        return Select(p->left, r, sum);
    }

    return Select(p->right, r - p->left->getW() - 1, sum);
 }

return Select(p->right, r - 1, sum);

返回columnarray包含111的所有行。

现在我想要选择columnarray包含111或/和222的所有行。像

这样的东西
SELECT * FROM table where (111) = ANY (columarray)

不起作用。它返回错误

  

错误:错误:运算符不存在:record = integer     提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。     位置:45   SQLState:42883   ErrorCode:0

1 个答案:

答案 0 :(得分:4)

您可以使用数组重叠运算符:

SELECT *
FROM table 
WHERE ARRAY[111, 222] && columnarray;