2

我现在在 Ruby on Rails 上工作了将近 4 周,所以将我视为初学者。

在执行条件查找查询时,我需要将整数的一部分(放入字符串中......)与另一个整数进行比较。

@invs = Inv.find(:all, :conditions => {:cnr => INTEGER_TO_BE_COMPARED_TO })

好吧,我找到了一种方法来获取整数的某个部分,并编写了以下方法:

def get_part_of_int
    @r = 整数((@cnr % 10000000)/100000.0)
    @r = "%02d" % @r
    @r.to_s
结尾

这应该给出@r = 01输出@cnr = 40138355

目标是仅显示invs01第二个和第三个数字。

我正在使用:
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' }) 有没有办法将列的一部分值与 eg 进行比较01

也许我应该反过来想。是否可以使用第 2 位和第 3 位进行搜索,cnrs例如01?诀窍是这些数字始终是第 2 位和第 3 位。我假设使用例如 Solr 的模糊搜索不起作用,因为在搜索时01我不想要cnr 40594013.

这可以以某种方式完成吗?

提前感谢您,我很抱歉让您感到困惑。

4

1 回答 1

1

如果你的问题is how to get the second and third digit from a integer? 你可以使用以下

40138355.to_s[1,2] ##This will give you "01"

已编辑参考:-子字符串

@invs = Inv.find(:all, :conditions => ["SUBSTRING(cnr,1,2) =?", @cnr.to_s[1,2] ])
于 2012-10-15T11:20:31.297 回答