查询 int 是否在数组列内,Postgres with Rails
Querying if an int is inside of an array column, Postgres with Rails
我有一个 table,其中有一列类型为整数数组。
给定一个整数作为输入,我想查询此列命名的行
tipo_propiedad 包含输入整数。
直接在 Postgres 中可以通过使用 && 运算符并将输入 int 转换为数组来工作。
问题是使用这个:
Zone.where("tipo_propiedad && ?", [].push(type)).count
其中 type 是输入整数,给出
SELECT COUNT(*) FROM "zonas" WHERE (tipo_propiedad && 1)
PG::UndefinedFunction: ERROR: operator does not exist: integer[] && integer
我也试过
Zone.where("tipo_propiedad && ?", [5].push(type))
因为 tipo_propiedad 里面只有 1、2 或 3,所以
SELECT COUNT(*) FROM "zonas" WHERE (tipo_propiedad && 5,1)
PG::UndefinedFunction: ERROR: operator does not exist: integer[] && integer
我也在使用 squeel,但是 gem 没有任何操作员可以执行此操作。
你可以做任何一个
Zone.where("'?' = ANY (tipo_propiedad)", 1)
或
Zone.where("tipo_propiedad && ARRAY[?]", 1)
# or "&& '{?}'"
我有一个 table,其中有一列类型为整数数组。 给定一个整数作为输入,我想查询此列命名的行 tipo_propiedad 包含输入整数。 直接在 Postgres 中可以通过使用 && 运算符并将输入 int 转换为数组来工作。 问题是使用这个:
Zone.where("tipo_propiedad && ?", [].push(type)).count
其中 type 是输入整数,给出
SELECT COUNT(*) FROM "zonas" WHERE (tipo_propiedad && 1) PG::UndefinedFunction: ERROR: operator does not exist: integer[] && integer
我也试过
Zone.where("tipo_propiedad && ?", [5].push(type))
因为 tipo_propiedad 里面只有 1、2 或 3,所以
SELECT COUNT(*) FROM "zonas" WHERE (tipo_propiedad && 5,1) PG::UndefinedFunction: ERROR: operator does not exist: integer[] && integer
我也在使用 squeel,但是 gem 没有任何操作员可以执行此操作。
你可以做任何一个
Zone.where("'?' = ANY (tipo_propiedad)", 1)
或
Zone.where("tipo_propiedad && ARRAY[?]", 1)
# or "&& '{?}'"