1

由于某种原因,我在将 ruby​​ 与 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, 2323] 等。

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

4

1 回答 1

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] 
于 2013-03-05T19:24:40.810 回答