6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Railsで検索窓で入力された文字列を使ってDBを検索する

Posted at

whereメソッドとLIKEの説明

whereメソッドとは、DBに対して任意の条件で検索して、データを取得するためのメソッド。
LIKEは、曖昧検索を行う仕組み。
ここでいう曖昧検索とは、「文字列が"a"ではじまる単語」とか「"06"で始まる電話番号」などの曖昧な表現を検索する仕組みです。

まず前提として、usersテーブルから特定の文字列で始まるユーザー名を検索しています。
このコードはコントローラに記述されていて、リクエストで入力された値がparams[:keyword]で送られてきています。

以下のコードを見ながら説明します

qiita.rb
@users = User.where("name LIKE ?", "%#{params[:keyword]}%")

三段階にわけて説明します。
①User.where
モデル名.whereとすることで、そのモデルのテーブルを検索するよう指示を出します。
②whereの第一引数 "name LIKE ?"
まずLIKEの前で、検索するカラムを指定します。ここではnameカラムを検索するようにしています。
LIKE ? で「曖昧検索しますよ」と宣言します。
ちなみに ? はプレースホルダと言うもので、第2引数の値を「?」へ置き換えるための目印です。
③whereの第二引数 "%#{params[:keyword]}%"
{params[:keyword]}で入力された文字列を受け取っています。%は正規表現で0文字以上の任意の文字列という意味です。前後に%を記入することで、もし文字列"a"が入力されていれば、「"a"を含む全ての文字列」という意味になります。

このように、whereやLIKEを使って特定の条件を指定することで、ほしい値のみを取り出して使用することができます。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?