複数カラムに対して1つのキーワードで検索を行おうとしています。
例えば「大阪」で検索したときに
都道府県カラムの大阪、市町村カラムの大阪、姓名カラムの大阪それぞれどのカラムでもいいので含んでいるレコードを出力したいです
単純にOR条件でWHERE区に条件を書くのがいいでしょうか?
それとも他に何か検討すべき方法などありましたら教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答5件
0
部分一致なので、StrPos関数を使い、
orでつなぐのがいいと思いますよ。
sql
1where StrPos(都道府県,'大阪') > 0 2 or StrPos(市町村,'大阪') > 0 3 or StrPos(姓名,'大阪') > 0
投稿2018/02/15 00:38
総合スコア1147
0
効率を無視していいなら
SQL
1WHERE concat_ws(",",カラム1,カラム2,・・・) LIKE '%大阪%'
みたいなやり方でしょうか
concat(',', tbl.*)
みたいなやり方もできるようです
投稿2018/02/08 04:55
総合スコア118233
2018/02/08 05:12
2018/02/08 05:26 編集
退会済みユーザー
2018/02/08 07:10
退会済みユーザー
2018/02/08 08:56 編集
2018/02/08 09:05 編集
2018/02/08 09:09 編集
退会済みユーザー
2018/02/13 10:20
0
完全一致であれば
SQL
1'大阪' IN (col1, col2)
が使えます。
投稿2018/02/13 09:59
総合スコア1111
0
PostgreSQLで日本語全文検索 も使えるか試してみては?
投稿2018/02/08 05:53
総合スコア16419
0
orで良いんじゃないでしょうか。
同じキーワードを何度も指定したく無いということなら、
例えば、検索キーワードに','を含まないこととして、各カラムをNullを考慮して結合すると以下のようにも記述できますが、あまりメリットは感じないですね。
SQL
1where coalesce(都道府県,'') || ',' || coalesce(市町村,'') || ',' || coalesce(姓名,'') 2 like '%' || キーワード || '%'
投稿2018/02/08 05:04
総合スコア25430
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。