我确信这很简单,但我是Ruby的小说,似乎无法找到一个非常基本的问题的答案。
我在PostgreSQL中有一个包含单词列表的表。我从查询中获取返回值以获取行数。当我尝试将此返回值分配给变量“wordcount”时,我似乎无法得到整数值。例如,如果我尝试使用wordcount(如下所示),Ruby会抛出错误“无法将Array转换为Integer(TypeError)”。简而言之,如何将从查询中获取的值转换为整数?提前谢谢。
q = 'SELECT COUNT(*) FROM words'
res = conn.exec(q)
wordcount = res.values[0]
puts wordcount
答案 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)
数据库库为您提供了一个支持返回多行的返回值。您可能正在获得一个包含单个行的数组,该数组包含一个带有您的值的列。