2016-11-15 104 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