likeであいまい検索!複数条件やOR条件も解説オオイシ2018/9/62019/7/31こんにちは!システムエンジニアのオオイシです。「LIKE検索で複数の条件はどうするの?」そんな疑問や課題を解決するために、この記事では以下の内容を解説していきます。まとめLIKEによるあいまい検索とはSQLにはLIKE句を使ったあいまい検索の構文があります。同様のことをRailsで実現するためには、whereメソッドにSQLのLIKE句で検索条件を記述します。「?」はプレースホルダと言うもので、第2引数の値を「?」へ置き換えるための目印です。SQLインジェクションなどのセキュリティリスクを防ぐ働きもあります。次項では、サンプルプログラムを解説していきます。SQLのWHEREやLIKEについてはこちらに詳しく解説しているので、ぜひ参考にしてみてください。2019年5月20日RailsでLIKE検索してみようSampleモデルを作成し、LIKE検索するサンプルプログラムを紹介します。テストデータの準備モデルを作成します。db:migrateテストデータを投入します。|+----+-------+-------------------------+-------------------------+なお、検索結果を一覧で確認できるようにするために、HirbというGemを使っています。詳しくはこちらに解説があるので参考にしてみてください。2019年8月9日モデルについてはこちらで詳しく解説しています。2019年5月17日RailsでLIKE検索するそれでは、RailsでLIKEを使って”BCD”を含む文字列を検索するサンプルコードを確認してみましょう。setこのようにあいまい検索することができました。%(0文字以上の任意の文字列)を活用して、様々なバリエーションで検索することができます。前方一致(から始まる):検索値%後方一致(で終わる):%検索値サンプルコードを見てみましょう。検索を確認することができました。任意の1文字で一致_(任意の1文字)を活用して、様々なバリエーションで検索することができます。|+----+-------+-------------------------+-------------------------+このように、_(任意の1文字)を使った、あいまい検索を確認することができました。OR・ANDを組み合わせた複数の条件ORやANDを使った複数の条件はこのように記述します。"条件2")1番目の「?」は第1引数に対応し、2番目の「?」は第2引数に対応している点に注目してください。高度なLIKE検索方法ransackとはransackと言うGemをご存知でしょうか。ransackとは、非常に簡単に検索機能を追加するための有名なGemです。今回は、ransackを使った高度なLIKE検索について解説します。ransackのインストールまずは、ransackをインストールします。表現するために列名に特別な述語を追加します。"○○").result次のように記述します。サンプルプログラムを確認してみましょう。"%値%").resultなどが利用できます。配列を条件にLIKE検索するransackを使うと配列で複数の検索条件を指定することができます。["値","値"...]).resultここでは、Aで始まりかつEで終わるサンプルコードについてみてみましょう。|+----+-------+-------------------------+-------------------------+このように配列で複数条件を指定することができました。Railsを独学で頑張っているけど先が見えない方のために独学でRailsを頑張っているわけだけど、先が見えない・・・そんな方、実はいらっしゃるのではないでしょうか?いや、おれは違うぞ。先のキャリアもしっかり見えてるし、独学の成果も出てきているそんな方であれば、これから先の話は必要ないでしょう。ページの閉じるボタンを押しましょう。「先が見えない」と心の底では勘付いているそこの奥さん。この先を読み進めて、一緒に課題を深堀りしていきましょう。「先が見えない」という不安や悩みを抱えてしまうのかさて、「一寸先は闇だ・・・」とお悩みを抱えている方に、なぜ独学でRailsを勉強しているにもかかわらず、そのような現状を抱えてしまうのか、一緒に考えていきましょう。先が見えない現状を踏まえ、課題として考えられるものは以下のどれかに該当するでしょう。プログラミングの上達が見えないプログラミングを継続できない気がするプログラミングスキルを習得した姿がイメージできないプログラミングスキルを活かした仕事を獲得するイメージができないこれらのどれかに該当することによって、「なんとなくプログラミング学習をしている」という状態になってしまいます。これらの要因は、三日坊主になる理論と同じなんですが、「プログラミング学習をしなきゃ」とプログラミング学習を頑張ってしまっている状態になってしまっています。受験勉強をやった経験のある方なら頭がもげるほどに首を縦に振ってしまう方も多いのですが、「今日も5時間勉強するぞ」や「今日はこの章を終わらすぞ」というように、学習を進めることに意識が行き過ぎてしまうと、ある程度学習を継続した後に「先が見えない・・・」となってしまいます。未来に光を当て、プログラミング学習を「成果が出るもの」にするために先ほど、「なぜ先が見えないという悩みや不安を抱えてしまうのか」という疑問に対しての答えを示していきました。これらの課題というのは、独学をしていれば9割の方がぶつかってしまう壁だそうで、いわば、あるあるの現象なのです。独学をしていて、「なんか前に進めていないぞ」と感じるのはこのせいなんですね。甘く見がちですが、非常にやっかい。これがさらにやっかいさを極めているのは、上記に挙げた課題のほとんどが、1人で解決できないものばかりだからです。実は、これらのほとんどが経験者に助けてもらいながら解決しないと、すぐに違う方向へと流れてしまいます。言い切れるのは、以前の私もそうだったからです。エンジニアやプログラマー関連のキャリアに詳しい方や現役のエンジニアに相談しながら修正を加え、学習を実践して今があります。言っても、周りにそういう人がいないし・・・という方もいるでしょう。いう時にこそ、プログラミングスクールの無料体験レッスンを利用するのです。営業をかけられて時間の無駄に終わるでしょ?という考えに辿りついてしまいますよね。結論から言うと弊社では、そういった強引な営業等を行うことはありませんので、安心して受講できます。「プログラミング学習の先ある未来」を光で明るく照らすには、弊社の無料体験レッスンがぴったりだと断言できます。それくらい無料体験レッスンに自信を持っているのです。(非売品)効率的なオリジナル学習カリキュラム未経験の転職(フリーランス)を可能にするキャリアサポート上記の特典だけでも他のスクールにはないポイントだと自信を持っている無料体験レッスン特典です。LIKE検索する方法について解説しました。Railsであいまい検索をしたい場合は検索条件をSQLに記述して実現します。ransackで高度な検索機能を簡単に追加することもできるので、ぜひ試してみてください。Railsであいまい検索の方法について忘れてしまったら、この記事を思い出してくださいね!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。プログラミング、システムアーキテクトからマネジメントに到るまでなんでも食べます。