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

アクセスカウンタ

zoom RSS ソートで「A」が「0」より前にくる話

<<   作成日時 : 2009/03/17 07:19   >>

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

SIer さんが、便利なネットワークアプリを紹介してくれた。
今流行のクラウドコンピューティング?
SQL をブラウザから POST すると、ネットワーク越しにどこかのDBMSでクエリーが走って、その結果セットを CSV で返してくれるというもの。
もちろん、SQL も直に手で書くのではなくて、ビジュアルデザイナで生成することもできる。

これで何が便利かというと...最近はPCもかなり強力だから「非力なPCの場合は云々」というのは大きなセールスポイントにならない。
むしろ、個別の PC に ODBC ドライバ他をインストールする必要がないとか、Access をインストールする必要がないとか、そういったのが便利だ。離れた席の人にクエリーを配るときとか。

しかしいきなり問題発生。
簡単な説明を受けて、早速使ってみたところ、どうも結果の並び順が私の想像とは異なっている。
十六進数的に考えて、「0 1 2 3 …」と数えていったら「… 9 A B C …」と並ぶのが普通だと、私は思っていた。
しかし、今回のアプリでは「A B C … X Y Z 0 1 2 3」と並んでくれる。
早速 SIer さんに尋ねたところ、「EBCDIC順で文字はソートされます 」とのこと。

EBCDIC というのは、主にメインフレームなどで使われている文字コードのことだ。
なるほど、クラウドコンピューティングと言わないまでも、ネットの向こう側にはメインフレームがあったわけだ。
我々が通常目にする ASCII だとか JIS だとかのコードとは文字の並び順が異なっており、確かに EBCDIC では、数字よりもアルファベットのほうが前に来ている。

さて、問題はこれで納得すべきかどうかだ。

幸いこのアプリは丁寧なことに、EBCDIC で処理した後、SJIS に文字コードを変換する機能まで持っている。なので、外字問題を除くと文字化けの心配はまずない。
しかし、既存のシステムが、ASCII 順でソートされることが前提で構築されているのに、ここで EBCDIC 順でソートされたら混乱するだけだ。
出てきた CSV をもう一度クライアント側でソートする? だとすると、ソートするためのユーティリティを全クライアントに配布しなければならない。
これって...

まあ、いずれにせよ、何も考えずにソートしていると、こういう落とし穴もあり得るという話だ。
数字と英字だけのソートでも色々な並び順があり得るのだ。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
ソートで「A」が「0」より前にくる話 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる