Ruby dbi select语句返回BigDecimal?

时间:2013-03-05 19:11:33

标签: sql ruby oracle dbi

由于某种原因,我在使用dbi时遇到麻烦,我正在尝试选择并将结果放入数组但没有运气。

require 'dbi'

db = DBI.connect('DBI:OCI8:database', XXXX, XXXX)

#Gets Consumer Id Number you want to create accounts for
numberOfAccounts = []
puts("Please enter a CID")
NewCID = gets.chomp()
numberOfAccounts << db.execute("select T_NBR from T_CBA where C_ID='#{NewCID}'").fetch

我的阵列最终会像这样:

[[<#BigDecimal:fc115f8,'0.8000169202 2E11',12(16)>]]

我希望有几个不同的数字,如[222,3232,2233]等。

我在网上搜索但无济于事。

1 个答案:

答案 0 :(得分:1)

基于数据字段,DBI可能已经确定基础列可能包含太大而不适合常规int类型的整数。或者它可能只是对所有整数类型使用BigDecimal以避免担心它。

如果你知道你的值都足够小以适应常规整数,你可以在填充之后将数组转换为整数,如下所示:

1.9.3-p194 :014 > numberOfAccounts
=> [[#<BigDecimal:119cd90,'0.123E3',9(36)>], [#<BigDecimal:119cd18,'0.456E3',9(36)>]] 
1.9.3-p194 :015 > numberOfAccounts.flatten!.collect!(&:to_i)
=> [123, 456] 
1.9.3-p194 :016 > numberOfAccounts
=> [123, 456]