2016-11-15 121 views
-1

使用Ruby 1.9。在Ruby中用圆括号替换方括号

我有一个阵列[1,2,3]

我需要将其转换为一种格式('1', '2', '3')以应用它的SQL查询里面(陈述)和数据库为MySQL。请建议一些好的解决方案。

谢谢:)

+1

任何数据库层像[Sequel](https:// github。 com/jeremyevans/sequel)会为你做这个。不要单独做。另外,请尝试升级您的Ruby。 1.9已经过去了。 – tadman

+0

@tadman:MySQL不会自动执行此操作。将尝试升级,谢谢:) –

+0

你如何从你的Ruby代码连接到数据库?你是否使用了像“ActiveRecord”,“Sequel”等的ORM? – james246

回答

2

看看上面不知道的意见,你还是要做到这一点,但只是为了好玩:

"('#{ [1,2,3].map(&:to_s).join("\',\'") }')" 
#=> "('1','2','3')" 

UPDATE:基于@tadman

评论假设这里的一个SQL实现是一些伪代码:

irb(main):003:0> array = [1,2,3,4] 
    => [1, 2, 3, 4] 
irb(main):004:0> array.map{|id| "$#{id}"}.join(",") 
    => "$1,$2,$3,$4" 
irb(main):011:0> ["SELECT * FROM table WHERE id IN (#{array.map{|id| "$#{id}" }.join(',')})", array] 
    => ["SELECT * FROM table WHERE id IN ($1,$2,$3,$4)", [1, 2, 3, 4]] 
+0

它应该是'('1','2','3')' –

+0

我不能真正给你括号内的东西,因为这不是红宝石中的对象类型。我需要更好地了解你想如何使用它? – veldtmana

+0

错了。危险错误。这不是你编写SQL语句的方式。你**必须**妥善逃避事情。 – tadman