RailsもMySQLも初心者です。
簡単な検索モデルを作っていますが、次のようなfindメソッドを使った検索の条件指定で、"name"の部分に複数の検索語句をor条件で指定することはできますか?
@users = User.find(:all, :conditions => ["family_name LIKE ?", name])
検索対象は文字列です。
("name1" or "name2")とか("name1" || "name2")などとやってみたのですが、最初の検索語句しか認知してくれないようです。
もしできるのでしたら、:conditionsの部分をどのように書いたらいいか教えてください。
Railsのバージョンは1.1.2です。
よろしくお願いします。
※先ほど勘違いして同じ質問をいったん削除してしまいました。
もしご覧になっていた方がいらしたら申し訳ありません。
No.1ベストアンサー
- 回答日時:
最初の条件の文で、もし、nameに"%"が含まれていないなら
@users = User.find(:all, :conditions => ["family_name LIKE ?%", name])
のように"?"のあとに"%"をつけます。
それから、複数の条件を指定するなら以下のようにします。(以下はLIKEを使っていません)
@users = User.find(:all, :conditions => ["family_name = ? or family_name = ?", name1, name2])
"family_name = ?"を繰り返し記述するのが嫌なら、以下のような書き方もあります。
@users = User.find(:all, :conditions => ["family_name IN ( ? , ? )", name1, name2])
動作テストはしていませんが・・・。この検索条件については、データベースのSQL文法の本を購入されると、参考になります。
「現場で使えるSQL/翔泳社」などもいいかもしれません。
この回答への補足
すみません。補足質問のほうが大きくなってしまいますが、やりたいことはこうです。
検索対象カラムは5つあって、そのそれぞれに検索キーワードが0~複数個あり、それらは配列に入っています。
それらのキーワードを使って同一カラム内はor条件で、異なるカラム同士はand条件で検索し、結果をページネーションしたいのです。
つまり、条件部分はこんな感じです。
(↓この書き方でいいのか自信ないのですが・・)
@users = User.find(:all, :conditions => ["(id = ? or id = ? or id = ?) and (family_name = ? or family_name = ?)", id1, id2, id3, name1, name2])
ただし、配列に入っているキーワードの数はわかりません。
今はカラムごとに配列の要素ごとに検索して、結果を結合していますが、それではページネーションができません。
それぞれのカラムに対するキーワードの数が不明な場合、検索を行ってその結果をページネーションすることは可能でしょうか?
ありがとうございます。
複数の条件指定の最初のやり方は、and条件ではやっていましたが、or条件では試していませんでした。
質問の仕方が下手で申し訳ないのですが、やりたいことはもう少し複雑なので補足質問に書かせていただきます。
参考書まで紹介していただいてありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- UNIX・Linux ワイルドカードの使い方 4 2023/08/08 20:51
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(プログラミング・Web制作) findコマンドでのグロッピング 4 2022/07/04 17:51
- Excel(エクセル) ExcelのFIND関数について 4 2023/06/06 18:10
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
- Excel(エクセル) Excelで関数を使って入力した値を、関数を抜いた値として扱いたい 1 2022/07/08 02:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
エクセルVBA シート名の部分一...
-
FindFirst を複数条件で検索
-
ACCESS テキストボックスを隙...
-
phpでボタンを押したときに変数...
-
文字列の連結について
-
MSXMLでの属性の存在確認法
-
VBAで特殊文字を出力したい
-
コンボボックスのtag情報の取得...
-
講義でわからないのですが以下...
-
[python] 文字列を変数名として...
-
VBAでPDFのコピーとリネームを...
-
Rails:findの条件指定(複数キ...
-
VBA他のブックから値のみ貼付す...
-
JSONで文字列が長い時
-
formで特定のinputを送信しない...
-
文字の横にプルダウンを表示さ...
-
VB6で、長い時間かかる処理...
-
テーブル内でドロップダウンメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
FindFirst を複数条件で検索
-
VBAでPDFのコピーとリネームを...
-
「*:*」って何を意味するのでし...
-
ACCESS テキストボックスを隙...
-
構造体の各データの表示につい...
-
phpでボタンを押したときに変数...
-
VBA他のブックから値のみ貼付す...
-
[python] 文字列を変数名として...
-
vbaでxmlからNodeListでデータ...
-
UWSC:ポップアップウインドウ...
-
コンボボックスのtag情報の取得...
-
MSXMLでの属性の存在確認法
-
エクセルVBA シート名の部分一...
-
C++ コマンドプロンプトでの入...
-
2つのpythonがあって、一方で...
-
【メモリ不足で落ちる(python)】
-
EXCELのマクロで外部データの取...
-
Option Strinct On のなかでの...
おすすめ情報