Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在Ruby中用括号替换方括号_Mysql_Arrays_Ruby_Format - Fatal编程技术网

Mysql 在Ruby中用括号替换方括号

Mysql 在Ruby中用括号替换方括号,mysql,arrays,ruby,format,Mysql,Arrays,Ruby,Format,使用Ruby 1.9 我有一个数组[1,2,3] 我需要将其转换为('1','2','3')格式,以便在SQL查询(语句中)中应用它,数据库是MySQL。请提出一些好的解决办法 谢谢:)查看上面的评论,不确定您是否仍想这样做,只是为了好玩: "('#{ [1,2,3].map(&:to_s).join("\',\'") }')" #=> "('1','2','3')" 更新:基于@tadman的评论 假设此处的SQL实现是一些伪代码: irb(main):003:0> ar

使用Ruby 1.9

我有一个数组
[1,2,3]

我需要将其转换为
('1','2','3')
格式,以便在SQL查询(语句中)中应用它,数据库是MySQL。请提出一些好的解决办法


谢谢:)

查看上面的评论,不确定您是否仍想这样做,只是为了好玩:

"('#{ [1,2,3].map(&:to_s).join("\',\'") }')"
#=> "('1','2','3')"
更新:基于@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]]

任何像这样的数据库层都可以为您做到这一点。不要一个人做这件事。另外,请尝试升级您的Ruby。1.9已经过了生命的尽头。@tadman:MySQL不是自动完成的。将尝试升级,谢谢:)如何从Ruby代码连接到数据库?您是否正在使用类似于
ActiveRecord
Sequel
等的ORM?MySQL不会自动执行任何操作。您必须使用库来正确编写SQL语句,否则您将不得不自己痛苦地编写它们。ActiveRecord。续集还有其他一些,我强烈建议您使用其中一种。如果是原始SQL,我怀疑AR是否能够将数组括号转换为Parantise,因为原始SQL直接进入数据库层执行。我在寻找优雅的解决方案,你找到下面列出的解决方案了吗?应该是
('1','2','3')
我不能在括号中给你一些东西,因为在ruby中这不是对象类型。我需要更好地理解你想如何使用这个?错。危险的错误。这不是编写SQL语句的方式。你必须正确地逃避事情。@tadman:正确的观点。然而,我根本没有考虑SQL实现。我只是想说明如何将ruby中的一个值数组转换为一个格式化的字符串,我知道你是从哪里来的,但这种半途而废的转义方式就是原因所在。它是用于SQL的,因此必须正确处理它。