Allied ArchitectsAllied ArchitectsEngineer Blog

MySQLの意外な?仕様

2012/04/11 MySQL

はじめまして。
システム内では完全に変態扱いの塚原です。

お花見の季節ですねー。
皆さんはご友人、会社でされましたか?

弊社は昨日行いましたw
平日だったので来られない方もいましたが、
参加者も多く結構盛り上がりました。
全社でワイワイするのも大事だなぁと思った今日この頃です。

さて、ここで技術的なことをひとつ。
先日ちょっとハマったことがあったので書きます。

画面で入力した値が存在しているかのチェックの仕組みを
確認していたときのこと。
MySQLを使っているのですが、

テーブル名: _TABLE

ID
A[スペース]

というデータが入力値’A’の場合に存在していると判定されてました。
調査してみると、
INSERTの時点でtrimしてないことがそもそもの原因じゃ。。。
っていうのははおいておいて、このデータが

SELECT * _TABLE WHERE ID = ‘A ‘;

で取得できるのはわかるのですが、

SELECT * _TABLE WHERE ID = ‘A’;

のSQLで取れてしまうのです。

書き方が悪いんじゃないかとか、
phpMyAdminでSQLを実行してたので、その仕様だろうと思い、
mysqlクライアントで実行しても同じ。。。とか、
いろいろ試した上、何故かN君の周りを数人が取り囲むという事態にまで発展し、
検索して出てきた答えがこれ。

http://www.dbonline.jp/mysql/type/index3.html

VARCHAR型だと
格納と取得は、末尾の空白がついたままですが、
WHERE句で比較するときだけ末尾の空白を削除した上で比較されるとのこと。

末尾の空白を削除して比較してくれるとか。。。優しすぎる。。。
良かれと思ってやったことが実は無駄だったってことよくありますが、
他の理由はあるにせよ、まさにそれを食らった感じでしたw

いやー無知でお恥ずかしいところですが、
普段使っているものでも、意外と知らない仕様があるので
もっと勉強しないとなぁと改めて思いました。

日々精進しますっ!

アライドアーキテクツでは、一緒に働く仲間を随時募集しています。是非一度採用サイトを覗いてみてください。お待ちしております。

塚原 大祐
  • 塚原 大祐
  • Webサービスを作る人(職人)
  • 名の由来は「天祐」。 そのままではおこがましいので 天の字から1本棒をとればと叔父がつけてくれたもの。 名に恥じぬよう世の中の助けとなるものを創り出していきたいです。 for Facebookのサポート・運用開発の部隊に所属しています。

RELATION ENTRY

phpにおけるswitch文の闇

phpにおけるswitch文の闇

2017/11/7 PHP

おひさしぶりです。塚原です。 朝夕は肌寒くなってきましたね。気づけばもう11月突入ということで 「今年もあと2ヶ月か~1年早いな」 と思いつつお問い合わせ対応など運用業務に勤しむ毎日です。 今回は、知ってはいたけど実際に遭遇すると嵌まる事例を紹介したいと思います。 少し前の問い合わせの話ですが、...

続きを読む

SQLで複数行をまとめて取りたいとき( GROUP_CONCAT )

SQLで複数行をまとめて取りたいとき( ...

2014/06/17 MySQL

ワールドカップはじまりましたね! 普段はサッカーを観戦したりはしないのですが、お祭り的な雰囲気が好きで見てしまいます。 おひさしぶりです。塚原です。 健忘禄も兼ねて mysqlの GROUP_CONCAT を紹介します。 同一のカテゴリーのデータが複数行にあるものを1カテゴリー1行で出し...

続きを読む

塚原 大祐の記事一覧へ

ページTOPへ