在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
有没有办法只用整数值过滤?
答案 0 :(得分:3)
试试这个吗?
Order.where("regexp_replace(0||code, '[^0-9]+', '', 'g')::integer >= ?", params[:code].to_i)