全角文字を含む行を検索する方法は?

このQ&Aのポイント
  • 特定の項目に全角文字が含まれている行を取得する方法をSQLで行いたいです。
  • REGEDITを利用した正規表現などで実現できないかと考えています。
  • MySQLのバージョンは5.0で、文字コードはutf8で、開発用のOSはLinuxおよびWindowsです。
回答を見る
  • ベストアンサー

全角文字を含む行を検索

お世話になります。 特定の項目に全角文字(=半角以外のもの全て)が含まれている行を取得、といったことを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
  • 回答数1
  • ありがとう数5

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

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

MySQLだと文字列長はCHARACTER_LENGTH()でバイト長がLENGTH() のようです。 (バージョンによって差があるかもしれないので実機で確認してください) たとえば・・・ SELECT * FROM TABLE_A WHERE LENGTH(COL_A)!=CHARACTER_LENGTH(COL_A) みたいな逃げ方はできませんか?

myosuke
質問者

お礼

ご教示頂いた方法で、実機にて無事検索することができました。 このような方法があるとは、目から鱗が落ちすぎて刺身になった気分です。 この方法で逃げ切れそうです。 ご回答いただき、本当に有難うございました。 とても助かりました。

関連するQ&A

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

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

  • MySQLで半角濁音文字の検索

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

    • ベストアンサー
    • MySQL
  • 全角大文字、小文字の区別

    いつもお世話になっております。 MySQLで全角の大文字、小文字の区別を行なわず検索を行ないたい と思っております。 半角でしたら、デフォルトで大文字と小文字の区別は行なわない ようなのですが、全角になってしまうと検索されません。 ご教授お願いいたします。 <環境> PHP:4.3.2 Apache:2.0.40 (Red Hat Linux) MySQL:3.23.56 または 3.23.58

  • 単一行副問合せにより2つ以上の行が返されます。エラーになります。

    単一行副問合せにより2つ以上の行が返されます。エラーになります。 お世話になります。 下記SQLを実行するとエラー”単一行副問合せにより2つ以上の行が返されます。” になってしまいます。 ご教授お願いします。 table1のcol01にtable2のcol01を table1のcol02にtable2のcol02を table2のcol03が3、table2のcol05が5で且つ table1のcol06とtable2のcol06が一致する場合に 変更したく下記SQLを作成しました。 update table1 set (col01,col02) = (select col01,col02 from table2 t2,table1 t1 where t2.col03 = 3 and t2.col05 = 5 and t2.col06 = t1.col06) where t1.col06 in (select col06 from table2); 以上 よろしくお願いします。

  • 全て全角文字かチェックしたい

    PHP Version 5.1.6を使っています。 UTF-8だと全角文字が3バイトとして扱われるので、 半角文字のチェックのままだと3倍の文字制限が必要になってしまいます。 例: [名前] 最大全角10文字まで 半角を入力した場合:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 全角を入力した場合:あああああアア亜亜亜 半角文字だと3倍の30文字まで入力できてしまうので、 なんとかして全角文字だけ入力したかチェックする正規表現が知りたいです。

    • ベストアンサー
    • PHP
  • DB2の行指定検索SQLについて

    select * from table where col1='X' order by col2; のようなselect文のXX行目~YYY行目の結果を返したい場合のSQLは、どのように作成すればよいのでしょうか?散々調べましたが、回答が見当たりませんでした。 どなたかご存知のかたいらっしゃいましたらご教授ください。

  • 条件のある検索方法

    たびたびお世話になります。 PL/SQLで以下のような検索をしたいのですが、 1つのSQLで実現するにはどのようなSQL文を 書けばいいですか?初心者ですが、よろしくお願いします。 ちなみに、Indexはありません。TABLE_AとTABLE_Bの列は同じです。 ・COL1='plan'、COL2='hokan'でTABLE_Aを検索し、  (1)データがあればTABLE_AのCOL3,COL4をTABLE_Bの   COL3,COL4と結合してTABLE_BのCOL0の値を取得  (2)データがなければCOL1='plan'、COL2='hokan'で  直接TABLE_Bを検索しCOL0の値を取得 よろしくご教示ください。

  • Word2007の全角文字、全角スペースの検索方法

    またまた質問申し訳ありません。 Word2007の書類で、全角文字、全角スペースが混じってて、これらを検索して特定したいのですが、 やり方がいまいちわかりません。 過去の質問から、[!0-9a-zA-Z]を入力すれば半角文字以外を検索できるみたいですが、 半角のスペースやコンマを検索してしまいます。 これらの半角スペースやコンマを検索したくないのですが、検索からはずすにはどうすればよいでしょうか?

  • 入門書のPHPサンプル内で、MySQL関数を使いたい

    環境:PHP5.0.3+MySQL4.0.14です。PHPどころか、プログラムも素人です。 検索結果をHTML表に一覧化する仕組みを作っているのですが WHERE条件に合致した数値データを平均化したり、 WHERE条件合致した日付データの書式を【MySQL関数によって】加工したいです。 それぞれ、mysql.exe(DOS窓上)での書き方はわかったものの (SELECT AVG(HOGE1) WHERE (HOGE <= 1) のように)、 これをPHPに組み込んだ際ににどう使えばわからないです。 今回使っているPHP入門書のサンプルは以下の通りです。ここで mysql_fetch_arrayに格納されたテーブル(カラム)を取り出しているらしい ことはわかりますが、以下のサンプルで加工したい対象である $col["DATE1"]、$col["HOGE1"]を $col["date_format(DATE1, '%y/%m/%d')"] や $col["AVG(HOGE1)"]などと してもだめみたいです。 以下の例で、これらを取り出すにはどのように記述したらいいでしょうか。 よろしくお願い致します。 <?php require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select * from mytable"; $rst = mysql_query($sql, $con); $recmax = mysql_num_rows($rst); $body = "結果: $recmax 件"; $body .= "<table>"; for ($recnum = 0; $recnum < $recmax; $recnum++) { $col = mysql_fetch_array($rst); $body .= "<td>" . $col["DATE1"] . "</td>"; $body .= "<td>" . $col["HOGE1"] . "</td>"; $body .= "</tr>"; } $body .= "</table>\n"; mysql_free_result($rst); $con = mysql_close($con); ?> <html> <head></head> <body> <?= $body ?> </body> </html>

    • ベストアンサー
    • PHP
  • 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