Rails:在where子句中将字符串字段转换为整数

时间:2017-05-24 07:37:15

标签: ruby-on-rails postgresql

postgres数据库中,我在code表中有一个字符串字段orders。该字段包含类似' COA-38-A',' EFILLDIRT'和' HE60LS-A'。 UI上有一个表单可以根据code过滤订单,并且字段中只允许整数值。

查询应按code字段中的整数值过滤订单,即如果输入30,则查询应返回带有代码' COA-38-A'和' HE60LS-A'因为查询包含>=

我尝试在查询中添加::integer

Order.where('code::integer >= ?', params[:code])

但出现以下错误:

PG::InvalidTextRepresentation: ERROR:  invalid input syntax for integer

有没有办法只用整数值过滤?

1 个答案:

答案 0 :(得分:3)

试试这个吗?

Order.where("regexp_replace(0||code, '[^0-9]+', '', 'g')::integer >= ?", params[:code].to_i)