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

Mysql 数组上的Ruby方法具有单独的元素,mysql,arrays,ruby,database,Mysql,Arrays,Ruby,Database,我正在编写一个ruby脚本,并希望执行本机Sql查询 I/p arr = ["1", 2, "3", 5, 6] 预期o/p: arr = (1,2,3,4) 它必须是我缺少的简单的东西,join总是给我1,2,3,4,当用于查询时 select * from users where id IN (1,2,3,4) 应该有用。当前,当1,2,3,4用作输入时,只有id与is 1匹配 编辑: 我正在使用mysql require 'mysql2' client = Mysq

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

I/p       arr = ["1", 2, "3", 5, 6]
预期o/p:

arr = (1,2,3,4)
它必须是我缺少的简单的东西,join总是给我1,2,3,4,当用于查询时

 select * from users where id IN (1,2,3,4) 
应该有用。当前,当1,2,3,4用作输入时,只有id与is 1匹配

编辑:

我正在使用mysql

require 'mysql2'

client = Mysql2::Client.new(:host => @db_host, :username => @db_user, :password => @db_pass, :database => @db_name, :port => @port)
任何快速解决方案都会有所帮助

 inp = ["1", 2, "3", 5, 6]
 outp = "(#{inp.join(',')})"
 # => "(1,2,3,5,6)"
这是我的样品台

$ 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
下面的代码显示了如何在mysql/postgres等中使用给定数组的in子句来查询这一点

$ 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]] 
使用

这是我的样品台

$ 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
下面的代码显示了如何在mysql/postgres等中使用给定数组的in子句来查询这一点

$ 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]] 

这不管用吗?从{arr.join',}中id所在的用户中选择*这应该有效,对我来说就像User.find_by_sqlover_stringignore最后一行,即User.find。。这是rails和activerecord,但字符串插值很好。您使用什么作为数据库客户端?ActiveRecord,sql2,Sequel?我正在使用sql2,更新了问题这不管用吗?从{arr.join',}中id所在的用户中选择*这应该有效,对我来说就像User.find_by_sqlover_stringignore最后一行,即User.find。。这是rails和activerecord,但字符串插值很好。您使用什么作为数据库客户端?ActiveRecord,sql2,Sequel?我正在使用sql2,更新了问题