LIKEを用いたあいまい検索の方法

このQ&Aのポイント
  • 部分一致で検索するためには、LIKE演算子を使用します。
  • しかし、'%b1.b2%'とすると検索結果が0になってしまいます。
  • 開発環境はMySQL 4.0.xです。
回答を見る
  • ベストアンサー

LIKEを用いたあいまい検索の方法

SELECT `a2` FROM `a1` , `b1` WHERE a1.a2 LIKE b1.b2; を部分一致で検索したいのですが不可能なのでしょうか? SELECT `a2` FROM `a1` , `b1` WHERE a1.a2 LIKE '%b1.b2%'; とするとエラーは出ないのですが、検索結果が0になってしまうのです。 [開発環境] MySQL 4.0.x a1 b1 +--------+    +------+ | a2    |    | b2   | +-------+    +-------+ | abcde  |    | cd    | +-------+    +-------+ よろしくお願い致します。

  • MySQL
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

SELECT * FROM `a1` , `b1` WHERE a1.a2 LIKE CONCAT('%',b1.b2,'%'); ってことでしょうけどSQLとしてはいただけないですね SELECT * FROM `a1` , `b1` WHERE a1.a2 REGEXP b1.b2; っていうのもあります

yore917
質問者

お礼

なるほど!どちらの方法でもうまく検索することができました!見た目の問題から正規表現のほうを採用させていただきました。 本当にありがとうございました。

関連するQ&A

  • LIKEで検索

    MySQL 4.0.20 + PHP で名前が入ったテーブルよりLIKEを使って検索すると全然関係のない名前まで引っ張ってきます。 SELECT * FROM `lady` WHERE name LIKE 'らむ' 上記で検索すると 「とも」って名前まで引っ張ってきます。 SELECT * FROM `lady` WHERE name LIKE 'らな' だと 「るる」って名前も引っ張ります。 どうも「ら行」の検索がうまく出来ないようです。 何か回避方法はあるのでしょうか? よろしく御願いします

    • ベストアンサー
    • MySQL
  • LIKE検索の場合うまくいきません

    WEBアプリとSQLServerでSELECTをするときに不正をされないように SELECT * FROM DB WHERE DB.A = 検索文字 を SELECT * FROM DB WHERE DB.A= @A のようにして、@Aを後で指定しますが、 SELECT * FROM DB WHERE LIKE '%検索文字' のようにLIKE検索の場合うまくいきません。 どのように記述したらいいのでしょうか? SELECT * FROM DB WHERE DB.A LIKE @A --> 駄目 SELECT * FROM DB WHERE DB.A LIKE '%@A' --> 駄目

  • SQLでlike検索条件を副問い合わせ結果にしたい

    SQLでlike検索する際、検索キーワードを副問い合わせの結果文字列とする方法があればご教示下さい。 イメージでは、、、 select A1列 from A表 where A1列 like '(select B列 from B表 where 条件)'; みたいなのが可能であればいいのですが。。。( 宜しくお願いします。

  • MySQL WHERE句のLIKE検索

    初心者ですみません。 MySQL WHERE句のLIKE検索で、引っかかった文字列を 除いた項目を表示させるにはどうしたらいいでしょうか。 例えば、 SELECT * from [テーブル名] where [フィールド名] like '%あ%'; として、「あ」が入っているレコードを検索し、 該当しないレコードを表示させる。 どうか教えてください。よろしくお願いします。

  • like で検索をすると出る場合と出ない場合がある理由は?

    MySQLに郵便番号データ(UTF-8)を入れて、phpmyadmin内で以下のように検索をかけました。 SELECT * FROM `post` WHERE `city` LIKE '%吾川郡いの町%' これは無事抽出されました。 ところが、以下を実行すると何も抽出されません。 SELECT * FROM `post` WHERE `city` LIKE '%いの町%' 範囲を広げたのに何故・・・という感じなのですが、考えられる要素は何かお分かりでしょうか。

    • ベストアンサー
    • MySQL
  • likeの使い方

    mySQLの4.1を使っています。 nameカラムに"水辺の蜘蛛"というデータが1件入っています。 select * from myTable where name like "%の蜘蛛%" or name_eng like "%の蜘蛛%" では1件とれるのですが、 select * from myTable where name like "%蜘蛛%" or name_eng like "%蜘蛛%" では0件になります。 何故でしょうか。

    • ベストアンサー
    • MySQL
  • like検索の複数キーワードで、プレースホルダを利

    like検索の複数キーワードで、プレースホルダを利用するやり方が分からないので教えてください <やりたいこと> ・複数キーワード検索(東京 hoge) <現状、出来ていること> ・1単語キーワード検索(東京) <分からないこと> ・配列として処理すれば良いみたいなのですが、プレースホルダとの絡みでどうすればよいのか分かりません <環境> ・MySQL ・PDO <現状コード抜粋> public function search($keyword)  {  $sql = "   SELECT a.*     FROM hoge a      WHERE (honbun LIKE :keyword)      ";  $keyword ="%".$keyword."%";

    • ベストアンサー
    • PHP
  • LIKE %検索単語%

    perlのDBIを用いてMYSQLのLIKE %検索単語%を使って掲示板の記事の全文検索を作りました。日本語の検索に関しては意図した記事を拾ってきてくれるのですが、英字の検索単語に関して、その英字だけを含んだ以外の記事も余計に拾ってきてきます。 現在の症状 【僕らは】 【意味】 【宝山】 といった単語が入った記事が検索単語をLIKE %a% として検索をかけると 【a】の検索結果として返ってきます。上記の記事内にはもちろん【a】という単語は含まれていません。 【僕らは】【意味】【宝山】といった単語はあくまでもこういった単語が検索結果として返ってきたというだけで参考までに用意した単語です。他にもあると思われます。原因がまったくわからないので、なぜこういった単語が【a】と検索をかけて引っかかってくるか全くわかりません。 掲示板の記事は以下にいれています テーブル名 post カラム名 log select * from post where log like '%a%'; 使用中の環境(PERL,MYSQLなど)の文字コードはすべてutf8で統一。 文字コードも統一しているし、日本語では意図したとおり動いてくれるので原因がまったくわかりません。お知恵をお貸しください。

  • ERROR 1054 (42S22) 原因不明です

    idはintでプライマリー a5はchar(10)で日本語文字列を格納 データを取得しようとすると#1054エラーがでます。 admin-------- SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき` #1054 - Unknown column 'ã moniter-------- mysql> SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`; ERROR 1054 (42S22): Unknown column '縺ゅ>縺・∴縺翫°縺・ in 'where clause' `あいうえおかき`の日本語に問題があると思い半角データを1行だけ更新しました。 admin-------- SELECT * FROM `aaa` WHERE `a5`=`abcde` #1054 - Unknown column 'abcde' in 'where clause' moniter-------- mysql> SELECT * FROM `aaa` WHERE `a5`=`abcde`; ERROR 1054 (42S22): Unknown column 'abcde' in 'where clause' admin-------- moniter-------- SELECT * FROM `aaa` WHERE `a5` SELECT `a5` FROM `aaa` WHERE 1 SELECT * FROM `aaa` WHERE `id`=89584 成功

    • ベストアンサー
    • MySQL
  • 曖昧検索LikeのOR条件

    アクセスでSQLを作成してます。 プロンプトで3つ項目を入力(未入力時はその分を考慮しない) して一致するのを検索する場合 --------------------------- select * from TABLE where 項目名 in ([項目1],[項目2],[項目3]) --------------------------- とする事で出来ました。 ただ、今検索を曖昧検索にしようとしています。 --------------------------- select * from TABLE where 項目名 like ("*" & [項目名1] & "*") or 項目名 like ("*" & [項目名2] & "*") or 項目名 like ("*" & [項目名3] & "*") --------------------------- 上記のようにするとプロンプトで未入力(リターン押下)時に 全てを検索対象にしてしまいます 未入力時は、そのプロンプトの条件自体を無効にしたいです。 何か良い方法はありますでしょうか?