どうすればこのようにすることができますか?RailsとLIKEの配列
myarray = ["name1","name2"]
Product.where('name ILIKE ?', %#{myarray}%)
私は名前がname1
とname2
のようなもので、すべての製品を取得する必要があります。
これは可能ですか?
どうすればこのようにすることができますか?RailsとLIKEの配列
myarray = ["name1","name2"]
Product.where('name ILIKE ?', %#{myarray}%)
私は名前がname1
とname2
のようなもので、すべての製品を取得する必要があります。
これは可能ですか?
あなたは平等(SQLのようLIKE 'string'
)where
の意味での文字列らしさを探している場合は、配列値のハッシュを受け入れる:
Product.where(name: myarray)
Product.where(name: myarray).to_sql
# => SELECT "products".* FROM "products" WHERE "products"."name" IN ('x', 'y')
、あなたがストリング(のようなLIKE '%substring%'
によってフィルタ処理する場合SQLで)Edgars Jekabsonsの答えをチェックしてください。
Product.where('name IN (?)', myarray)
トリックを行う必要があります;)
私はあなたがILIKE
機能ですべての値をテストしたいと思います。
これはPostgresの中で行うの方法です:
myarray_with_percetage_signs = ["name1","name2"].map {|val| "%#{val}%" }
Product.where("name ILIKE ANY (array[?])", myarray_with_percetage_signs)
LIKEについて尋ねた質問:
は次のようにRailsの/ Rubyの構文に変換するようにしてください。 –
質問は、 'name1'と' name2'を検索するためのアプローチと同じようなものを求めました。これは正確に私の答えがしているものです。あなたは本当に別のアプローチを提供するので、私の答えをdownvoteしますか? –
彼は答えが 'name1'と' name2'に完全に一致している間に結果に 'name1'または' name2'という単語を含む名前を含めることを望みます。彼は 'ILIKE'キーワードで問い合わせる方法を尋ねていました。 –