• ベストアンサー

一文字の検索

失礼致します。 質問させてください。 like節を使って文字列の部分検索を行っています。 しかし一文字(「グ」とか「バ」とか)で検索しようとした場合、検索文字を含まない答えまで返してくることが多いです。 ネット上で調べたところ、こういった問題はよく起こるらしく、どうやらバイト数に関係があるみたいです。 と、そこまでは分かったのですがそれ以上のことは書かれていませんでした。むしろそれができるサイトはそれを売りにしてるみたいでしたし・・ どなたか分かる方おられませんか?? よろしくお願いします。m(__)m

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

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

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 んっと…「なぜい1文字で検索すると検索文字を含まない答えまで返してくることが多いのか?」というご質問でよろしいでしょうか? ちっと文章が長くなりそうなのと、丁度良いPageを見つけたのでURL貼り付けておきます。 http://www.kiteya.net/script/msearch/#faq にある、8番の「1.31の「正しい全角1文字の検索」とは何ですか?[1.3以上]」をご覧いただけると。 非常に丁寧に解説してあります。

javatea_1985
質問者

お礼

ありがとうございます。 URL先の説明はすごく分かりやすいものでした。 この説明でいけば、たとえ検索文字が二文字でもその4バイトがうまく合致する被検索文字があればそれを拾ってくることになりますね。 ネコ=(A,B,C,D) スイカ=(S,A,B,C,D,E) みたいに。 また、1文字検索ですが、 like '%x%'とするところを like BINARY '%x%'とする事で解決しました。 (googるので徹夜してしまいました・・) アドバイスありがとうございました!! // JavaTea

関連するQ&A

  • CStringの文字列検索&抜き出しについて

    お世話になります。 ///////////開発環境/////////// WinXP VisualStudio 2005 SDI MFC 以上の環境にてプログラムしています。 現在CString型の変数の中にある文字列操作について悩んでいます。 例えば、 CString Test(:program!~program@123.456 TEST :message); このような内容が入ってるとします。 こんな時に例えばTESTを抜き出したい時にどうすればいいでしょうか? なお、毎回TESTという文字列ではなくTEST2などの文字列が変わるもの だとするとバイト数指定が出来なくて困っています。 バイト数指定しないでTESTのTのアドレスをGETしてそれを'\0'までを 切り抜くと:messageの部分まで取れてしまいます。 でもバイト指定が可変なので、出来ない・・。どうすればいいのでしょうか?? 同様にmessageの部分も毎回変わっていてバイト数指定出来ません。 こちらの方は、文字列の最後から:を探していって:が見つかったらその アドレスから'\0'までを切り出せばいいと思うのですが、もし messageの部分に:mess:ageこういうメッセージが送られて来た時に、 :ageしか取れなくなり、本当はmess:ageを切り抜きたいのです。 せっかくMFCのCStringを使っているので、strtokやstr~などのC言語関数 は避けたいのですが、何かいい案ありますでしょうか?? ご教示宜しくお願いいたします。

  • 制御文字を含む文字列を扱うには

    field char(50) binary not null unique primary key,fulltext (field) この設定で作られたフィールドがあり、主にlike検索をされます。 このフィールドには本来10進数の数字の文字列を入力する事を考えていたのですが、(数値としては桁数が大きすぎる事と、その数字列の中に"123"を持つ物を探すなど数量とは関係無い検索がされる事から文字列にしています) MySQLのリファレンスによると、インデックスの対象になる文字列は桁数が短い方がいいようなので、どうせ数値でなく文字列を使っているのならと思い、1バイトで表現出来る全ての文字を使い256進数で表し、桁数を節約しようと考えました。 256進数に直してしまうと10進数の状態で"ある数字列"を持つのかどうか分からなくなるのではないかと思うかもしれませんが、それはこのフィールドに行われるlike検索の特徴により解消されます。 長い前置きでしたが、質問はタイトル通り制御文字を含む文字列を扱う事、言い換えれば0~255の全ての文字コードを文字列データとしてMySQLでインサート・全文インデックス・セレクトする方法です。このフィールドのデータは出力される事は無く、selectのwhere部分に使われ、出力されるのは同レコード内の別のフィールドのデータです。 素直に以下のコードでテストしましたが失敗しました。 while ($i < 50){ $rand = mt_rand(0,255); $str .= chr($rand); $i++; }/*insertする文字列$strを生成*/ $sql = "insert into table(field) values ('$str')" $strの中に制御文字や"や'等の文字が入るとinsertが失敗し、追加出来たレコードについても、コマンドプロンプトからselectして出力してみるとPCが警告音を連発します。 何か方法は無いでしょうか?

    • ベストアンサー
    • MySQL
  • ワイルドカードを用いた文字列検索

    皆様こんにちは、 Windows2000+VC6にてワイルドカード(*,?)での文字列比較を 作成したいのですが、そういう関数は無いのですね。 比較対象文字列には2バイト文字も含まれており、*,?自身も 比較できないといけません。 なにか良い方法や、サンプルを教えて頂ければありがたいです。 VBではLIKEで一発だったと思うのに..... VBからCに入ると戸惑うことがいっぱいですね。 よろしくお願い致します。

  • 検索の完全一致は可能か?

    エクセル(ちなみに2000ですが)上での検索で、 部分一致ではなく、完全一致で検索することは可能ですか? たとえば「love」という文字だけを探したいのですが、「almost like being in love」などの該当する文字列すべてひっかかってしまうのです。 オプション機能にはありませんので、検索時なにか記号を入れるのだと思うのですが、可能ですか?

  • エクセルで文字検索を簡単に。

    エクセルで文字検索を簡単にする方法はありますか? B列2行目以降に年月日(曜日)・・・同じ年月日(曜日)の行がたくさんある場合もあります。 C列以降はB列に関する文字が入力されています。 検索対象は年月ですが、検索するのに標準コマンドで検索すればよいことかと思いますが、年月日(曜日)がかなり増え、簡単に検索する方法がないかと、ネットなどで調べましたがなかなかヒットしません。 H19年4月、5月・・・H20年1月、2月・・・・○○年月の文字を1行目に作成し、その文字をクリックすると該当する年月の行の始まりまたは、該当する年月の行のいずれかを表示させる方法はありますでしょうか? エクセルは2000です。 参考サイト等ご存じでしたらよろしくお願いします。

  • エクセルにて 文字列を参照し検索して値を返す方法。

    ある列から文字列を参照し、参照した文字列を他の列から検索し、検索行の指定した列の値を返したいと思います。   A B C D 1 林 2 森 3 根  林 5 4 根   梨 3 例えば、B1に答えを返したいと思います。 条件は、A1の文字列(林檎)と同じ文字列のものをD列から検索し、検索されたら、その行のE列の値を返したいのです。 答えは5なるようにしたいです。 またA列の文字群は変化するので、特定な文字検索というよりは、セルにはいっている文字列を検索したいです。 たいへん困っております。分かるかたよろしくお願いします。

  • Oracleのあいまい検索について

    Oracle(10g)のあいまい検索について。 DB上に「ABC」「DEF」という2つのデータがある状態で、 「ABCDEF」で検索した場合について、 検索結果として、「ABC」と「DEF」の両方を得る方法はありますでしょうか? (現状では対象データがありませんとなります。) LIKEによるあいまい検索や、Oracle textによる全文検索では、 上記の検索結果を得ることができません。 LIKEやOracle textの場合はあくまで部分一致なので、 検索対象の文字列([ABC」「DEF」)より長い(「ABCDEF」)文字列での 検索はヒットしないようです。 ご存じの方いましたら、ご教示頂きたいと思います。 以上

  • MSDEでntextの文字検索クエリ

    MSDEを使っています。 ntext型で定義したフィールドの文字列検索クエリの実行を 行いたいのですが、ntext型のフィールドにはLIKEが使えないようです。 どのようにしたらよいものでしょうか?

  • 文字列検索:C++

     こんにちは。私は今月よりC++を勉強し始めたものです。  質問なのですが『ファイルから文字列を検索し、ファイル内の対象文字列がある行数と総検出数を返す』というプログラムはどう組めばいいのでしょうか?  よろしくお願いいたします。

  • 文字列検索機能

    HPを作っていて文字列検索機能をページのトップに付けたいのですが、トップで文字列を検索することでリンク先にまで(サイト全体でその文字があるところまで)文字が含まれるところまでジャンプさせたいのですが、どうすればよろしいでしょうか? 本当に困っています。 知っている方がいらしたら教えてください。