我现在用Ruby on Rails工作了将近4周,所以请考虑我作为初学者。
执行条件查找查询时,我需要将整数的一部分(放在字符串中)与另一个整数进行比较。
@invs = Inv.find(:all, :conditions => {:cnr => INTEGER_TO_BE_COMPARED_TO })
好吧,我找到了一种方法来获取整数的某个部分,并编写了以下方法:
def get_part_of_int @r = Integer((@cnr % 10000000)/100000.0) @r = "%02d" % @r @r.to_s end
这应该从@r = 01
@cnr = 40138355
目标只显示invs
,例如01
作为第二和第三位。
我正在使用:
Rails 3.2.8
Ruby 1.9.3p194
提前谢谢大家。
==编辑:==
我意识到我的帖子中没有问号。而且有一些混乱。
列名cnr
的值应该被剥离到第2和第3位,并与字符串进行比较,例如01
。
谢谢@Salil的建议
但这不起作用..但我理解使用它的方式。以下内容将字符串:cnr
转换为:nr
。
Inv.find(:all, :conditions => {:cnr.to_s[1,2] => '01' })
有没有办法比较列的值的一部分与例如01
?
也许我应该反思。是否可以使用第2和第3位搜索cnrs
,例如01
?诀窍是这些数字总是第2和第3位。我假设用例如模糊搜索Solr不起作用,因为在搜索01
时我不想cnr
40594013
。
这可以通过某种方式完成吗?
提前感谢您,并且道歉让您感到困惑。
答案 0 :(得分:1)
如果您的问题is how to get the second and third digit from a integer?
您可以使用以下
40138355.to_s[1,2] ##This will give you "01"
EDITED Ref: - Substring
@invs = Inv.find(:all, :conditions => ["SUBSTRING(cnr,1,2) =?", @cnr.to_s[1,2] ])