2016-09-15 12 views
6

こんにちは私は、Ruby On RailsでLIKE句を使用しています。を入力してレコードを検索しようとすると「more」は返されませんが、 「もっと」で行う、それはもっとキーワードが含まれているレコードを返すので、それは大文字と小文字を区別を振る舞うようにそれはそう、
今私のクエリはあるそうならば、我々は、それは大文字と小文字を区別しないすることができますそれから私に知らせてください。"Like Clause"の作成方法大文字と小文字を区別しない

Job.where('title LIKE ? OR duration LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%") 

ありがとう:ここ

は、私が現在使用しているクエリです。

答えて

12

私はあなたがPostgresを使用していると仮定します。

あなたはILIKE

Job.where('title ILIKE ? OR duration ILIKE ?', "%#{params[:search]}%", "%#{params[:search]}%") 

を使用するか、いくつかのトリッキーなハックlower()

Job.where('lower(title) LIKE lower(?) OR lower(duration) LIKE lower(?)', "%#{params[:search]}%", "%#{params[:search]}%") 
+0

[OK]を感謝のようなものを試してみた1使用する? –

+0

「LIKE/ILIKE」はクリーナーなので好きです。 –

+0

okありがとうございました:) –

0

はあなたが提案してください可能性があり、そんなにこの

def query_job(query) 
    job_query = "%#{query.downcase}%" 
    Job.where("lower(title) LIKE '#{job_query}' or lower(duration) LIKE '#{job_query}'") 
end 

query_job(params[:search]) 
+1

['クエリを作成するために文字列の連結を手動で行うと危険です。 '](http://guides.rubyonrails.org/security.html#sql-injection) –

関連する問題