ruby-on-rails - 如何查找具有整数值而不是字符串的记录

标签 ruby-on-rails activerecord casting type-conversion

我有列字段作为字符串例如。 start_age("20") 和 end_age("40")。

现在我想要年龄(24 为整数)在 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)

关于ruby-on-rails - 如何查找具有整数值而不是字符串的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28625611/

相关文章:

ruby-on-rails - Rails Assets 管道优先级与 css 文件

mysql - Rails+MySQL 在生产环境中:数据库配置未指定适配器 (ActiveRecord::AdapterNotSpecified)

ruby-on-rails - 使用 ActiveRecord 获取组内最近记录的平均值

ruby-on-rails - ActiveRecord(Rails): How to do custom (SQL) joins in Rails without an association?

C 运算符结果类型

ruby-on-rails - Rails ActiveRecord - update_all : how to update multiple fields at once with mixed type of arguments

ruby-on-rails - 创建一个 created_by 列并与 rails 关联?

ruby - 事件记录查找和更新

c - 转换和取消引用 void* 时出现段错误

java - @After 的 AOP 切入点