並び替え(ORDER BY)でちょっとはまった話

SQL Serverに対してSQL文で

SELECT * FROM テーブル名 ORDER BY 項目1

とやった。
取得したデータは配列に落とし込んで使用していたのだが、どうも並び順が一部おかしい。

具体的に言うと"["が数字よりも前に来ている。
しかし手元のVB6で処理しようとすると"["は数字よりも後ろにある事になっている。ちなみにExcel VBAでも"["は数字より後だった。(まぁVBなので当然といえば当然)

これでは具合が悪いので色々調べてみたところ「バイナリ順」で並び替えを行う事ができるようなので、今回はそれで対処する事にした。(バイナリ順は"A"と"a"が厳密に区別されて並び替えられるので、場合によっては弊害がある)

SELECT * FROM テーブル名 ORDER BY 項目1 COLLATE Japanese_BIN

とりあえずこれで"["は数字やアルファベットよりも後ろに来るようになった。