访问Ruby中从SQL返回的数组值

时间:2011-10-23 02:30:23

标签: ruby arrays postgresql type-conversion

我确信这很简单,但我是Ruby的小说,似乎无法找到一个非常基本的问题的答案。

我在PostgreSQL中有一个包含单词列表的表。我从查询中获取返回值以获取行数。当我尝试将此返回值分配给变量“wordcount”时,我似乎无法得到整数值。例如,如果我尝试使用wordcount(如下所示),Ruby会抛出错误“无法将Array转换为Integer(TypeError)”。简而言之,如何将从查询中获取的值转换为整数?提前谢谢。

q = 'SELECT COUNT(*) FROM words'
res  = conn.exec(q)
wordcount = res.values[0]
puts wordcount

3 个答案:

答案 0 :(得分:1)

使用PostgreSQL(可能还有大多数其他连接器),它将是:

wordcount = res[0]["count"]

你确定你不想这么做:

Word.count

虽然?

答案 1 :(得分:1)

exec方法返回PGResult个实例和PGResult#values

  

将所有元组作为数组数组返回。

所以你的res是一个数组数组:结果集中每一行的一个条目,每个条目本身就是一个每列有一个条目的数组。他们也是字符串,试试这个:

wordcount = res.getvalue(0, 0).to_i
puts wordcount

答案 2 :(得分:0)

数据库库为您提供了一个支持返回多行的返回值。您可能正在获得一个包含单个行的数组,该数组包含一个带有您的值的列。