キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
<< なぜかケータイをAndroidに変更 | main | Linux-ha japan 勉強会に参加してきました。 >>
MySQLの文字列比較セマンティクスは「空白埋め」
0
    JUGEMテーマ:コンピュータ


    商用御三家(Oracle, MS SQL Server, IBM DB2)のうち、私が一番最初に接したのはOracleだったので、以下のページで説明してある文字列比較セマンティクスはわかりやすいものでした。

    CHAR と VARCHAR2 の違い 〜 文字列比較セマンティクス 〜 (SHIFT the Oracle)

    Oracleとは違いMySQLの場合は、CHARもVARCHARも空白埋め比較セマンティクスで比較されるということ。
    そのため、以下のような後続の半角スペースの個数が違うだけの文字列は、CHAR, VARCHAR、文字リテラルで同一視されます。

    mysql> select 'a' = 'a';
    +-----------+
    | 'a' = 'a' |
    +-----------+
    | 1 |
    +-----------+
    1 row in set (0.00 sec)

    mysql> select 'a' = 'a '; -- 'a' の後にスペースがあっても同一視。
    +------------+
    | 'a' = 'a ' |
    +------------+
    | 1 |
    +------------+
    1 row in set (0.00 sec)

    「これじゃ困る」という場合には、=の代わりにLIKEを使えば区別できます。

    mysql> select 'a' like 'a ';
    +---------------+
    | 'a' like 'a ' |
    +---------------+
    | 0 |
    +---------------+
    1 row in set (0.00 sec)

    あと、困るのはユニークインデックスを作成するとき。CHARの場合は格納時にカラムの定義長まで
    半角スペースでパディングされるので、以下のようなシーケンスで二番目がはじかれるのはわかりやすいのですが、

    mysql> create table t1(c1 char(4) unique);
    Query OK, 0 rows affected (0.31 sec)

    mysql> insert into t1 values('a'); -- 格納時に'a' -> 'a 'になる。
    Query OK, 1 row affected (0.15 sec)

    mysql> insert into t1 values('a ');
    ERROR 1062 (23000): Duplicate entry 'a' for key 'c1'
    mysql>

    VARCHARで同様なことをしても二番目がはじかれるのは、直感的にはわかりにくいのでご注意ください。

    mysql> create table t2(v1 varchar(4) unique);
    Query OK, 0 rows affected (0.26 sec)

    mysql> insert into t2 values('a'); -- 'a'のまま格納されるけ。。。。
    Query OK, 1 row affected (0.14 sec)

    mysql> insert into t2 values('a '); -- uniqueチェックの際空白埋め比較セマンティクスで比較される。
    ERROR 1062 (23000): Duplicate entry 'a ' for key 'v1'
    mysql>

    この件についてはマニュアルにも記述があります。(下記マニュアルの一番下)

    11.4.1. CHAR と VARCHAR タイプ

    [2015-10-16 追記] 上記リンクがリンク切れ(MySQL 5.1)になったので、MySQL 5.6の日本語マニュアルにリンクを張りなおしました。


    | meijik | MySQL | 23:36 | comments(0) | trackbacks(0) | - | - |









    http://blog.kimuradb.com/trackback/877166
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
    << March 2017 >>
    + RECOMMEND
    + RECOMMEND
    IS <インフィニット・ストラトス> アンコール『恋に焦がれる六重奏』 [Blu-ray]
    IS <インフィニット・ストラトス> アンコール『恋に焦がれる六重奏』 [Blu-ray] (JUGEMレビュー »)

    原作第四巻の映像化(らしい)この売れ具合で二期の制作可否が決まる??
    + RECOMMEND
    プロのための Linuxシステム構築・運用技術 (Software Design plus)
    プロのための Linuxシステム構築・運用技術 (Software Design plus) (JUGEMレビュー »)
    中井 悦司
    Linuxの構築・システム運用について非常にコンパクトにうまくまとまった本。
    + RECOMMEND
    + RECOMMEND
     (JUGEMレビュー »)

    インターネットラジオ。これ以外は全滅か。。。
    + RECOMMEND
    + RECOMMEND
    MySQL 5.1 Plugin Development
    MySQL 5.1 Plugin Development (JUGEMレビュー »)
    Andrew Hutchings,Sergei Golubchik
    MySQL 5.1 のプラグインを作るならこれ!
    + RECOMMEND
    AWKを256倍使うための本 (Ascii 256倍)
    AWKを256倍使うための本 (Ascii 256倍) (JUGEMレビュー »)
    志村 拓,鷲北 賢,西村 克信
    ここにきてまさかの復刊。15〜16年前の本ですが、いまでも十分役立ちますよ!!
    + RECOMMEND
    実践ハイパフォーマンスMySQL 第2版
    実践ハイパフォーマンスMySQL 第2版 (JUGEMレビュー »)
    Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling
    待望の日本語版登場!英語版には日々お世話になっていますm(_ _)m
    + RECOMMEND
    High Availability MySQL Cookbook
    High Availability MySQL Cookbook (JUGEMレビュー »)
    Alex Davies
    MySQL Clusteringを書いたAlexの新作。
    + RECOMMEND
    MySQL High Availability: Tools for Robust Data Centers
    MySQL High Availability: Tools for Robust Data Centers (JUGEMレビュー »)
    Charles Bell,Mats Kindahl,Lars Thalmann
    Expert MySQLの著者とMySQLのエンジニアが書いたHAの本。
    + RECOMMEND
    Linux-DB システム構築/運用入門 (DB Magazine SELECTION)
    Linux-DB システム構築/運用入門 (DB Magazine SELECTION) (JUGEMレビュー »)
    松信 嘉範
    Linux-DB システム構築の新スタンダード。DB Magazine人気連載、待望の書籍化です!!
    + RECOMMEND
    + RECOMMEND
    超・極める!MySQL
    超・極める!MySQL (JUGEMレビュー »)
    坂井 恵,志村 和彦,ひろせ まさあき,松信 嘉範
    内容は少々古くなりましたが、内部説明があり、いろいろ面白いです。
    + RECOMMEND
    The Root of .NET Framework
    The Root of .NET Framework (JUGEMレビュー »)
    荒井 省三
    .NETの根っこをつかむ、か?
    + RECOMMEND
    + RECOMMEND
    間違いだらけのソフトウェア・アーキテクチャ―非機能要件の開発と評価 (Software Design plus)
    間違いだらけのソフトウェア・アーキテクチャ―非機能要件の開発と評価 (Software Design plus) (JUGEMレビュー »)
    Tom Engelberg
    技術評論社から献本されました。ありがとうございました。
    + RECOMMEND
    プログラマーのためのソースコードを読む技術
    プログラマーのためのソースコードを読む技術 (JUGEMレビュー »)
    高木 信尚
    技術評論社から献本されました。ありがとうございました。
    + RECOMMEND
    カレーの心得 (エイムック 1979)
    カレーの心得 (エイムック 1979) (JUGEMレビュー »)

    カレー特集。レシピも多々ありよい感じです。
    + RECOMMEND
    おとなの週末 2010年 07月号 [雑誌]
    おとなの週末 2010年 07月号 [雑誌] (JUGEMレビュー »)

    カレー特集。新しいお店も多くはいっていてグッド!!
    + RECOMMEND
    SQL Antipatterns: Avoiding the Pitfalls of Database Programming (Pragmatic Programmers)
    SQL Antipatterns: Avoiding the Pitfalls of Database Programming (Pragmatic Programmers) (JUGEMレビュー »)
    Bill Karwin
    俗にいう「落とし穴(Pitfalls)」本のSQL版。チト期待。
    + RECOMMEND
    + RECOMMEND
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド (JUGEMレビュー »)
    奥野 幹也
    これまでにない構築、そして構築後のMySQLのための本。
    + RECOMMEND
    12ステップで作る組込みOS自作入門
    12ステップで作る組込みOS自作入門 (JUGEMレビュー »)
    坂井 弘亮
    KOZOSプロジェクト坂井さん渾身の一冊。この一冊が組み込み開発の明日を作るといっても過言ではありません!!
    + RECOMMEND
    シンクロニシティーン
    シンクロニシティーン (JUGEMレビュー »)
    相対性理論
    ねらわずさわがず、まさかのVocal回帰のアルバム。ここが相対性理論の分水嶺か?!
    + RECOMMEND
    Oh!
    Oh! (JUGEMレビュー »)
    少女時代
    K-POP最前線。かわいいだけではない韓国アイドルの底力が見えます!
    + RECOMMEND
    「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか
    「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか (JUGEMレビュー »)
    小森 裕介
    技術評論社から献本されました。ありがとうございました。
    + RECOMMEND
    Database Management Systems
    Database Management Systems (JUGEMレビュー »)
    Raghu Ramakrishnan,Johannes Gehrke
    ミックさん連載の参考書籍です。
    + RECOMMEND
    WEB+DB PRESS Vol.56
    WEB+DB PRESS Vol.56 (JUGEMレビュー »)
    WEB+DB PRESS編集部
    ミックさんの新連載はじまりました。
    + RECOMMEND
    Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series)
    Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series) (JUGEMレビュー »)
    W. Richard Stevens,Stephen A. Rago
    必読! といいつつ私が読んだのは初版の日本語訳です。差分はチェックしないといけませんね。
    + RECOMMEND
    + RECOMMEND
    + RECOMMEND
    Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE
    Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE (JUGEMレビュー »)

    DELL SX260の換装用に購入。今はコチラのほうが安いですね。
    + RECOMMEND
    情熱プログラマー ソフトウェア開発者の幸せな生き方
    情熱プログラマー ソフトウェア開発者の幸せな生き方 (JUGEMレビュー »)
    Chad Fowler
    OSC2010神戸に出展されたジュンク堂で買いました。
    + RECOMMEND
    Software Design 総集編 【2000~2009】(DVD付)
    Software Design 総集編 【2000~2009】(DVD付) (JUGEMレビュー »)

    メガトン級の過去記事。売り切れる前にお店に急げ!
    + RECOMMEND
    + RECOMMEND
    玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2
    玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2 (JUGEMレビュー »)

    Aspire 1410 HDD換装後、昔のHDDはこれにいれます。
    + RECOMMEND
    + RECOMMEND
    ゼロから学ぶ!最新データベース (日経BPパソコンベストムック)
    ゼロから学ぶ!最新データベース (日経BPパソコンベストムック) (JUGEMレビュー »)

    最新のデータベース勉強ムック。付録はMS SQL Server Express Edition.
    + RECOMMEND
    Kaspersky Internet Security 2010 1年版 鷹の爪コラボパック
    Kaspersky Internet Security 2010 1年版 鷹の爪コラボパック (JUGEMレビュー »)

    た〜か〜の〜つ〜め〜。
    ファンにうれしいコラボパック。
    + RECOMMEND
    Software Design ( ソフトウェアデザイン ) 2010年 02月号 [雑誌]
    Software Design ( ソフトウェアデザイン ) 2010年 02月号 [雑誌] (JUGEMレビュー »)

    Key-valueストアのまとめ(memcached除く)と松信さんのMySQL短期連載1回目(4回予定)が掲載されています。
    + RECOMMEND
    日経ソフトウエア 2010年 01月号 [雑誌]
    日経ソフトウエア 2010年 01月号 [雑誌] (JUGEMレビュー »)

    やはりビギナーには日経ソフトウエアかな。
    + RECOMMEND
    Linuxで作るアドバンストシステム構築ガイド (18Network Server Construction Guide)
    Linuxで作るアドバンストシステム構築ガイド (18Network Server Construction Guide) (JUGEMレビュー »)
    デージーネット
    名著といわれた「Linuxアドバンストネットワークサーバ構築ガイド〜HAサーバ構築編」の改訂版です。要チェック!
    + RECOMMEND
    acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22
    acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22 (JUGEMレビュー »)

    色違い黒(他に青と白があります): メモリは最大4GBとあるが、がんばれば8GBいけるらしい。
    + RECOMMEND
    WEB+DB PRESS Vol.54
    WEB+DB PRESS Vol.54 (JUGEMレビュー »)
    WEB+DB PRESS編集部
    ミックさんの連載、いつも見てます。
    + RECOMMEND
    SoftwareDesign(ソフトウェアデザイン) 2010年 01月号 [雑誌]
    SoftwareDesign(ソフトウェアデザイン) 2010年 01月号 [雑誌] (JUGEMレビュー »)

    特集「LLとオープンソースに学ぶコードを読む技術」に寄稿いたしました。
    + RECOMMEND
    厳選!旨い焼鳥焼きとん130店 完全保存版 (Town Mook)
    厳選!旨い焼鳥焼きとん130店 完全保存版 (Town Mook) (JUGEMレビュー »)

    Firebirdといえばこれでしょう、というのは嘘ですが、おいしい焼き鳥、焼き豚のお店で満杯です。
    + RECOMMEND
    Firebird 徹底入門
    Firebird 徹底入門 (JUGEMレビュー »)
    木村 明治,はやし つとむ,坂井 恵
    Firebird日本ユーザ会のはやしさん、そしてMyNAから拝借(?) してきた坂井さんとともに書きました。まだ誰も知らないFirebird 2.5や、いままでドキュメントのなかったツール類についてもソースを確認してとりあげた本です。是非ご活用ください。
    + RECOMMEND
    MySQLデータベース構築バイブル
    MySQLデータベース構築バイブル (JUGEMレビュー »)
    志村 和彦,松信 嘉範,池田 徹郎
    志村さん、松信さん、池田さん、ととにかく濃いこの一冊。構築バイブルというよりHackに近いです。
    + RECOMMEND
    MySQL全機能バイブル ~現場で役立つAtoZ~
    MySQL全機能バイブル ~現場で役立つAtoZ~ (JUGEMレビュー »)
    鈴木 啓修
    名著「
    MySQL全機能リファレンス」はバージョン4.xまでの対応でしたが、今回装いも新たに5.1まで対応しての発売です。
    + SELECTED ENTRIES
    + RECENT COMMENTS
    • 使い慣れたSQLに潜む実装依存: Firebirdの場合(6) 文字列との結合演算子
      noname (12/10)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      Moriaki_ (01/05)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      Moriaki_ (01/05)
    • 2015年版 InterBaseの歩み
      nakagami (12/06)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      meijik (11/22)
    • 分散DB本読書会第46回メモ「STOP AFTER 10」
      masudahidehiko (09/01)
    • Windows上でのMySQLビルド方法
      kinoyasu (03/31)
    • 気軽に新しいMySQLを試してみる: MySQL Sandboxのススメ
      MeijiK (09/19)
    • 伝わらない曲シリーズ: 川島恵「ミスター不思議」
      96 (07/05)
    • 気軽に新しいMySQLを試してみる: MySQL Sandboxのススメ
      MeijiK (02/17)
    + RECENT TRACKBACK
    + CATEGORIES
    + ARCHIVES
    + MOBILE
    qrcode
    + LINKS
    + PROFILE