2016-11-15 5 views
-1

Ruby 1.9を使用しています。角括弧をかっこで置き換えます。

私は(文で)SQLクエリ内でそれを適用するために、フォーマット('1', '2', '3')に変換する必要があり、データベースがMySQLのある配列[1,2,3]

を持っています。いくつかの良い解決策を提案してください。

感謝:)

+1

[続行](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

これはrubyのオブジェクト型ではないので、括弧内に何かを与えることはできません。私はあなたがこれをどのように使いたいのかをもっと理解する必要がありますか? – veldtmana

+0

間違っています。危険なほど間違っている。これは、SQL文の作成方法ではありません。 **あなたは正しく物事を逃れるべきです**。 – tadman

関連する問題