LIKEを用いたあいまい検索の方法
- 部分一致で検索するためには、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 | +-------+ +-------+ よろしくお願い致します。
- yore917
- お礼率76% (26/34)
- MySQL
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
SELECT * FROM `a1` , `b1` WHERE a1.a2 LIKE CONCAT('%',b1.b2,'%'); ってことでしょうけどSQLとしてはいただけないですね SELECT * FROM `a1` , `b1` WHERE a1.a2 REGEXP b1.b2; っていうのもあります
関連するQ&A
- 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 Server
- SQLでlike検索条件を副問い合わせ結果にしたい
SQLでlike検索する際、検索キーワードを副問い合わせの結果文字列とする方法があればご教示下さい。 イメージでは、、、 select A1列 from A表 where A1列 like '(select B列 from B表 where 条件)'; みたいなのが可能であればいいのですが。。。( 宜しくお願いします。
- 締切済み
- Oracle
- 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検索の複数キーワードで、プレースホルダを利
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で統一。 文字コードも統一しているし、日本語では意図したとおり動いてくれるので原因がまったくわかりません。お知恵をお貸しください。
- 締切済み
- MySQL
- 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] & "*") --------------------------- 上記のようにするとプロンプトで未入力(リターン押下)時に 全てを検索対象にしてしまいます 未入力時は、そのプロンプトの条件自体を無効にしたいです。 何か良い方法はありますでしょうか?
- ベストアンサー
- その他(データベース)
お礼
なるほど!どちらの方法でもうまく検索することができました!見た目の問題から正規表現のほうを採用させていただきました。 本当にありがとうございました。