【问题标题】:Accessing array values returned from SQL in Ruby在 Ruby 中访问从 SQL 返回的数组值
【发布时间】:2011-10-23 02:30:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby arrays postgresql type-conversion


    【解决方案1】:

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

    wordcount = res[0]["count"]
    

    你确定不想这样做吗:

    Word.count
    

    虽然?

    【讨论】:

    • 是的好地方——虽然我的意思是 res[0]["count"]。是的,那是真的,但考虑到 OP 自称的笨拙,认为这可能值得一提!
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      数据库库为您提供了一个支持返回多行的返回值。您可能会得到一个单行数组,其中包含一个数组,该数组的单列取您的值。

      【讨论】:

        猜你喜欢
        • 2011-02-21
        • 2014-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-08
        • 2013-06-20
        • 2012-05-12
        • 2011-05-06
        相关资源
        最近更新 更多