Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3-将整数的一部分与其他整数进行比较 我现在和Ruby Orrails一起工作了将近4个星期,所以把我当作初学者。_Ruby On Rails_Ruby_Ruby On Rails 3_Integer - Fatal编程技术网

Ruby on rails Rails 3-将整数的一部分与其他整数进行比较 我现在和Ruby Orrails一起工作了将近4个星期,所以把我当作初学者。

Ruby on rails Rails 3-将整数的一部分与其他整数进行比较 我现在和Ruby Orrails一起工作了将近4个星期,所以把我当作初学者。,ruby-on-rails,ruby,ruby-on-rails-3,integer,Ruby On Rails,Ruby,Ruby On Rails 3,Integer,在执行条件查找查询时,我需要将整数的一部分(放入字符串..)与另一个整数进行比较 @invs=Inv.find(:all,:conditions=>{:cnr=>INTEGER\u TO\u BE\u COMPARED\u TO}) 我找到了一种得到整数某一部分的方法,并编写了以下方法: def get_part_of_int @r = Integer((@cnr % 10000000)/100000.0) @r = "%02d" % @r @r.to_s end def

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

@invs=Inv.find(:all,:conditions=>{:cnr=>INTEGER\u TO\u BE\u COMPARED\u TO})

我找到了一种得到整数某一部分的方法,并编写了以下方法:

def get_part_of_int @r = Integer((@cnr % 10000000)/100000.0) @r = "%02d" % @r @r.to_s end def get_部分_整型 @r=整数((@cnr%10000000)/100000.0) @r=“%02d”%@r @r、 到 结束 这应该给出来自
@cnr=40138355

目标是仅显示
invs
,例如
01
作为第二位和第三位数字

我正在使用:
轨道3.2.8
Ruby 1.9.3p194

提前谢谢大家

==编辑:==
我意识到我的帖子里没有问号。。还有一些困惑

列名
cnr
的值应去除到第二位和第三位,并与字符串进行比较,例如
01

谢谢@Salil的建议。
但是这不起作用。。但我知道如何使用它。下面将字符串
:cnr
转换为
:nr
Inv.find(:all,:conditions=>{:cnr.to_s[1,2]=>'01'})
是否有方法将列值的一部分与例如
01
进行比较

也许我应该换个角度考虑。是否可以用第二位和第三位数字搜索
cnrs
,例如
01
?诀窍是这些数字总是第二位和第三位。我假设使用例如Solr的模糊搜索不起作用,因为在搜索
01
时,我不想要
cnr
40594013

这能以某种方式做到吗


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

如果您的问题
是如何从整数中获取第二位和第三位数字?
您可以使用以下命令

40138355.to_s[1,2] ##This will give you "01"
编辑参考:-


我很困惑。。。所以问题是如何从整数中得到第二和第三个数字?cnr文件的数据类型是什么?@halfelf,不,我用POST方法计算出来的。但是Salil在下面发布的方法看起来更干净了。在这种情况下,db列命名为
cnr
,并具有a值,例如
40138355
40538492
。这两个数字应与第二位和第三位数字进行比较,例如
01
。如果这是
真的
,则应显示记录@AmitPatel,数据类型是字符串。但是可以通过
转换为\u i
仅供参考
“01”。to\u i为您提供1
感谢您对该问题的回答。然而,这不是确切的问题。你让我意识到在我的帖子里连一个问号都没有。所以我理解这种混乱。列名
cnr
的值应去除到第二位和第三位。因此,您的方法比我发布/编写的方法更棒、更干净。但是,我无法将其放入
.find
查询中<代码>Inv.find(:all,:conditions=>{:cnr.to_s[1,2]=>'01'})你能帮我吗?谢谢你的回复。
01
去了哪里?我想这应该是
@cnr.to_s[1,2]
?我实现了你的线路,但没有得到任何结果。事情就是这样:
SELECT
inv
*FROM
inv`WHERE(SUBSTRING(cnr,1,2)='01')`无法找出我缺少了什么。但再次感谢您的投入。
@invs = Inv.find(:all, :conditions => ["SUBSTRING(cnr,1,2) =?", @cnr.to_s[1,2] ])