• 締切済み

半角数字を全角数字で検索できるのはなぜ?

MYSQLの検索について テーブルAAAのitemには半角の「0000」が入っています。 しかし、下記のSQLを実行すると検索されます。 なぜ全角文字を半角として処理するのでしょうか? 検索しないようにするには、どう対処すればよろしいのでしょうか? テーブル構成 TABLE名:AAA id int(11); item varchar(4) utf-8 -> '0000' SQL文 SELECT * FROM AAA WHERE item = '0000'

  • MySQL
  • 回答数2
  • ありがとう数0

みんなの回答

  • qbr2
  • ベストアンサー率50% (62/123)
回答No.2

MySQLの仕様です。 以下のURLを参考にしてください。 http://variable.jp/?tag=case-sensitive

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

キャラクターセットが間違っているんじゃないかな?

pos_pos
質問者

補足

お世話になります。 下記のように「UTF-8」に設定しています。 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

関連するQ&A

  • mysqlのカラムaaaに、英文があり、そのなかに「JUST」という全

    mysqlのカラムaaaに、英文があり、そのなかに「JUST」という全角の文字列が両方にあるとします。 select * from TABLE where aaa like "%JU%"(JUは全角) なら、該当行が表示されるのに、 select * from TABLE where aaa like "%US%"(USは全角) という検索をphpmyadminで行っても、検索されません。 これはなぜなんでしょうか?全角が半角文字コードに変わるときに関係しているのでしょうか? これを検索するようにする方法はあるでしょうか? ちなみに、USを半角にすると、半角で登録されている行はちゃんと検索されます。

    • ベストアンサー
    • MySQL
  • MySQLで半角濁音文字の検索

    宜しくお願い致します。 MySQLのselect検索時にフリーワード検索をしています。 DB上には半角・全角文字が混在しており、検索窓に入力した文字の全角・半角を区別せずに検索しております。 文字コードがUTF-8なので、SQL文のwhere区で「collate utf8_unicode_ci」を指定して全角・半角の区別無しで検索しております。 しかし、半角濁音文字、たとえば「ベルト」や「パワー」等の文字列がDB上に半角カタカナで入っている場合に検索窓に全角で入力しても検索できません。 原因はDB上では半角の「ヘ」と「濁音記号」として認識しており、検索窓に入れた文字列は、そのまま「ベ」という1文字として認識しているので検索できないと思われます。 この問題を解決する方法が無くて悩んでおります。 どなたかご教授の程、宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • 入力データの半角スペースと全角スペースを区別させる方法

    データベースに文字列を保存する際、既に同じ文字列が保存されていないか事前にチェックをかけているのですが、この時半角スペースが入った文字列と、全角スペースが入った文字列を同じものと認識してしまい、これを区別したいのですが、どういった方法があるのでしょうか。 具体例を出しますと、 「AAA BBB」(間の空白は全角スペース)を入力する際、同じ文字列が同じフィールドに保存されていないか、SQLのWHERE句で「フィールド名="AAA BBB"」を指定して検索し、同じ文字列があれば警告を出しているのですが、「AAA BBB」(間の空白は半角スペース)にも検索でマッチしてしまいます。 この検索の時に「AAA BBB」をマッチさせないようにしたいのです。 OS:Linux MySQLバージョン:5.1.22 文字コード:UTF-8 です。 よろしくお願いします。

  • テーブル上に存在しないデータの一覧を取りたい。

    mysql+phpで開発を行っています。 テーブル id 101 102 104 106 109 110 の様にデータが入っているテーブルaaaがあります。 プログラムで取得したid一覧が上記テーブルにレコードがあるのか確認するSQLは 例)select id from aaa where id in (101,102) で取得できるということは分かっています。 ここで select id from aaa where id in (102,103) とやると102の1件が取得できます。 今回知りたいことは 逆に取得できなかった103という値を取得する方法はないのかという事です。 select id from aaa where id=102; select id from aaa where id=103; 2回SQLを実行して値が戻ってこないSQL=テーブルにそのレコードが無いというプログラムを書けばいい事は分かっています。 しかし、処理が少なくとも数千回発生してしまう予定ですのでできれば別の方法がいいと思っています。 また、in区で使っている一覧はテーブルには入っておらず、また、こちらも数千個あるので、一時テーブルに入れるといってもかなりの時間がかかってしまうと思います。 何か一発で取得できるいい方法などありますでしょうか? ちなみにaaaテーブルは5万件ほどなので全件php側でメモリに展開してサーチも避けたいです よろしくお願いいたします。

  • 半角数字が入ったデータで、半角数字を全角数字に変化関したいのですが

    半角数字が入ったデータで、半角数字を全角数字に変化関したいのですが うまくいきません。 文字コードはUTF-8です。 下記のような、関数を使ってまず半角の1を全角の1に変換しようとしました。 int substitute(unsigned char *s, int n){ int num; num= atoi(s); switch(num) { case '1': s[n] = 0xEF; s[n+1] = 0xBC; s[n+2] = 0x91; s[n+3] = 0x0d; break; defult: break; } return 0; } この関数をかましても半角は全角になりませんでした。 誰か、ご教授願えませんか?

  • PL/SQL)Functionの引数(文字列)をWHERE文に記述する方法

    PL/SQLで、Functionの中で実行するselect文のWhereに、Functionの 引数で受けとった値をセットしようとしています。 この引数が文字列(VARCHAR2型)の場合、どのようにWHEREで、記述したらよいのでしょうか? ご教授のほどをよろしくお願いします。 CREATE OR REPLACE FUNCTION Fn_TBL_AAA (psCODE IN VARCHAR2) IS CURSOR TBL_AAA_CUR IS SELECT * FROM TBL_AAA WHERE BBB = psCODE ; TBL_AAA_REC TTBL_AAA_CUR%ROWTYPE;       :       : ※上記のように記述すると、実行ではエラーが発生しないのですが、  取得したい結果が返ってきません。TABLE(TBL_AAA)のBBBは、  VARCHAR2なので、通常のSQL*PLUSのSELECT文ではBBB = psCODE  はBBB = 'psCODE'のように [']で括るのですが、PL/SQLの  FUNCTION内ではどのように記述すればよいのかが  わかりません。 以上、よろしくお願いいたします。

  • AccessのSelect文での全角半角区別

    教えてください AccessのSQL文についてなのですが、 Select * From TableA Where Colum1 = 'なかの' とすると、「なかの」も「ナカノ」も「ナカノ」(半角)も全部とれてしまいますが、これを、「なかの」で検索したら「なかの」だけ、「ナカノ」(半角)で検索したら「ナカノ」(半角)だけしかHitしないように書けないものなのでしょうか? すみませんが、どなたかよろしくお願いします。

  • 全角文字を含む行を検索

    お世話になります。 特定の項目に全角文字(=半角以外のもの全て)が含まれている行を取得、といったことをSQLで行えないでしょうか。 REGEDITを利用した正規表現などで実現できないかと考えているのですが、何を書けばよいのかまったく不明な状態です。 ご存知の方がいらっしゃいましたら、ぜひ教えて下さい。 よろしくお願い致します。 ■環境 MySQL:5.0 文字コード:utf8 OS:LinuxおよびWindows(開発用) ■例 [TABLE_A] id| COL_A | COL_B | --+--------+-------+ 1 | あいう | hoge | 2 | カキク | hoge | 3 | foo | hoge | --+--------+-------+ 【欲しい結果とSQLイメージ】 SELECT * FROM TABLE_A WHERE COL_A ほにゃらら 1|あいう|hoge 2|カキク|hoge

    • ベストアンサー
    • MySQL
  • Accessのクエリで半角円マークが抽出できない

    いつもお世話になっております。 Windows XP(SP3) 上でAccess 2003 SP3を利用しているのですが クエリで"\"(半角円マーク)をWhere句に指定した際に 半角・全角とも抽出してしまい困っています。 回避策をご存知であれば教えてください。 ■サンプルデータ テーブル名を「テーブル1」登録データは次とします。 番号  名前(テキスト型)    説明 ---- ---------------------  -----------------  1 ああああ¥ああああ   #全角の円マーク  2 ああああ\ああああ    #半角の円マーク ■作成したクエリ SQLビューでいうと次になります。 SELECT 番号,名前 FROM テーブル1 WHERE 名前 Like "*\*" 【結果】 番号  名前(テキスト型)    説明 ---- ---------------------  -----------------  1 ああああ¥ああああ   #全角の円マークもヒットする  2 ああああ\ああああ    ■他に試したSQL (1)全角を明確に除外 SELECT テーブル1.番号, テーブル1.名前 FROM テーブル1 WHERE (((テーブル1.名前) Like "*\*" And (テーブル1.名前) Not Like "*¥*")); >>【結果】該当件数0件となりいずれもヒットしない (2)円マークをchrで指定 SELECT テーブル1.番号, テーブル1.名前 FROM テーブル1 WHERE 名前 Like ("*" & chr(92) & "*") >>【結果】2件ともヒット

  • mysqlに格納したエクセルファイルの、シート内の文字列を検索したいの

    mysqlに格納したエクセルファイルの、シート内の文字列を検索したいのですが上手くいきません。 半角英数の文字列なら、以下のSQL文で引っ張ってくることができました。 SELECT * FROM テーブル名 WHERE 列名 LIKE '%abc%'; mysqlのバージョンは5.1です。 検索はPHPで行おうと思っています。 どなたか知っている方いらっしゃいましたら、よろしくお願いします。