【问题标题】:How to find record with integer value instead of string如何查找具有整数值而不是字符串的记录
【发布时间】:2015-04-21 22:23:44
【问题描述】:

我有 列字段作为字符串 例如。 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

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    请写:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 2020-10-25
      • 2021-12-06
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多