如何查找具有整数值而不是字符串的记录
How to find record with integer value instead of string
我有列字段作为字符串 for ex。 start_age("20") 和 end_age("40")。
现在我想要年龄 (24 as integer) 介于 start_age 和 age_age 之间的用户。那么我怎样才能得到这个用户呢?
我试过这个查询
User.where("start_age < (?) AND end_age > (?)", age, age)
但出现此错误:
PG::UndefinedFunction: ERROR: operator does not exist: character varying < integer
提前致谢。
请写:
User.where("start_age::integer <= :age AND end_age::integer >= :age", age: age)
# or equivalent
User.where(":age BETWEEN start_age::integer AND end_age::integer", age: age)
这是一些演示 :
test_dev=# select 20 between '1'::integer and '10'::integer as result;
result
--------
f
(1 row)
test_dev=# select 5 between '1'::integer and '10'::integer as result;
result
--------
t
(1 row)
test_dev=# select '12'::integer as number;
number
--------
12
(1 row)
我有列字段作为字符串 for ex。 start_age("20") 和 end_age("40")。
现在我想要年龄 (24 as integer) 介于 start_age 和 age_age 之间的用户。那么我怎样才能得到这个用户呢?
我试过这个查询
User.where("start_age < (?) AND end_age > (?)", age, age)
但出现此错误:
PG::UndefinedFunction: ERROR: operator does not exist: character varying < integer
提前致谢。
请写:
User.where("start_age::integer <= :age AND end_age::integer >= :age", age: age)
# or equivalent
User.where(":age BETWEEN start_age::integer AND end_age::integer", age: age)
这是一些演示 :
test_dev=# select 20 between '1'::integer and '10'::integer as result;
result
--------
f
(1 row)
test_dev=# select 5 between '1'::integer and '10'::integer as result;
result
--------
t
(1 row)
test_dev=# select '12'::integer as number;
number
--------
12
(1 row)