民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS Excel で文字列比較の罠

<<   作成日時 : 2009/03/26 23:14   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

Excel では 「=」 演算子を用いて文字列の比較ができる。
セルに
=IF("イカ" = "タコ", 0, 1)
と入力すると 1 と表示される。
そんなの当たり前と言われるかも知れない。
しかし、次の例ではどうだろうか

=IF("FireFox"="firefox", 0, 1)
知っている人なら、これで 0(2つの文字列は等しい) と表示されることがすぐに分かるだろう。
しかし、知らない人にとっては、なぜこの2つの文字列が等しいのか、まったく分からないだろう。

Excel の 「=」演算子はアルファベットの大文字小文字を区別しない。
それだけのことなのである。
大文字小文字まで区別したければ、EXACTワークシート関数を使い、=IF(EXACT("FireFox", "firefox"), 0, 1) と入力しなければならない。これなら結果は 1 となる。

これの何が難しいかというと、要は「知っているかどうか」だけの問題でしかないのに、結果への影響が甚大だというところである。
しかも、このことを知らされる機会というのは、そうそうあるものではない。知らないまま生涯を終える人のほうが圧倒的に多数なのだ。
他のプログラミング言語と同じように考えて "FireFox" と "firefox" は別物として扱ってもらえるに違いないと思い込んで 「=」 演算子を使うと、後で痛い目を見ることになる。

これと似たような例で、MySQL も基本的に、文字列比較の際に大文字小文字を区別しないというものがある。
実は、MySQL で先日実際に痛い目にあったばかりなので、もしやと思って調べてみて、Excel の挙動に気付いた次第だ。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Excel で文字列比較の罠 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる