数组上的Ruby方法具有单独的元素

时间:2017-05-22 13:37:17

标签: mysql arrays ruby database

我正在编写ruby脚本并希望执行本机Sql查询。

I/p       arr = ["1", 2, "3", 5, 6]

预期o / p:

arr = (1,2,3,4)

它必须是一些我想念的简单,加入总是给我“(1,2,3,4)”,当在查询中使用时

 select * from users where id IN (1,2,3,4) 

应该有效。目前,当“(1,2,3,4)”用作输入时,只有id与1匹配。

编辑:

我正在使用mysql。

require 'mysql2'

client = Mysql2::Client.new(:host => @db_host, :username => @db_user, :password => @db_pass, :database => @db_name, :port => @port)

任何快速解决方案都会有所帮助

2 个答案:

答案 0 :(得分:1)

 inp = ["1", 2, "3", 5, 6]
 outp = "(#{inp.join(',')})"
 # => "(1,2,3,5,6)"

答案 1 :(得分:1)

使用Array#join

这是我的样本表

$ sqlite3 test.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> select * from cars;
1|Audi|52642
2|Mercedes|57127
3|Skoda|9000
4|Volvo|29000
5|Bentley|350000
6|Citroen|21000
7|Hummer|41400
8|Volkswagen|21600

下面的代码显示了如何在给定数组的in子句中查询(这在mysql / postgres等中几乎相同)。

$ irb
2.3.1 :001 > require 'sqlite3'
# => true 
2.3.1 :002 > db = SQLite3::Database.open 'test.db'
# => #<SQLite3::Database:0x00000000d892d0 @tracefunc=nil, @authorizer=nil, ... 
2.3.1 :003 > qry = "select * from Cars where id in (#{[1,2,3,4, "5"].join(", ")})"
# => "select * from Cars where id in (1, 2, 3, 4, 5)" 
2.3.1 :004 > db.execute qry
# => [[1, "Audi", 52642], [2, "Mercedes", 57127], [3, "Skoda", 9000], [4, "Volvo", 29000], [5, "Bentley", 350000]]