2014-04-27 72 views
0

用戶輸入到text_field_tag a,b,c被看作是一個value1,即value1 = 'a,b,c'在SQL IN運營商(value1, value2, value3,...,)而不是value1='a',value2='b'value3='c'SQL IN運算符,逗號分開的輸入值

我使用續集的db.fetch來編寫SQL。拆分和聯接及其關聯的正則表達式格式似乎沒有給出'a','b','c'的形式,即SQL IN運算符中的單獨值。

有什麼想法?

+2

當它從文本字段讀你爲什麼不能拆單值到一個數組?並將結果數組傳遞給查詢? – StanislavL

+0

你所說的話並不給出'IN','B','C'的確切形式,這是IN運營商的期望。 – Nothing

+0

@沒有使用'where'和傳遞數組,Sequel爲你處理轉換:'dataset.where(value1:['a','b','c'])' – Stefan

回答

0

假設你有一些用戶輸入的字符串:

user_input = 'a,b,c' 

posts表與value1列。你可以用postsabc用下面的查詢:

values = user_input.split(',') 
#=> ["a", "b", "c"] 

DB = Sequel.sqlite 
#=> #<Sequel::SQLite::Database: {:adapter=>:sqlite}> 

dataset = DB[:posts] 
#=> #<Sequel::SQLite::Dataset: "SELECT * FROM `posts`"> 

dataset.where(:value1 => values).sql 
#=> #<Sequel::SQLite::Dataset: "SELECT * FROM `posts` WHERE (`value1` IN ('a', 'b', 'c'))"> 
+0

好東西!謝謝。 – Nothing