恥ずかしい話ですが、照合順序という言葉を最近知りました。きっかけは以下の記事。
http://blogs.wankuma.com/ognac/archive/2010/06/04/189722.aspx
ところで、SQLServerで、以下のような都道府県テーブルを作ってみました。
CREATE TABLE dbo.都道府県(
県名1 varchar(10) NOT NULL,
県名2 nvarchar(10) NOT NULL
)
データは当然の如く以下。
…以下略
県名1 県名2 北海道 北海道 青森県 青森県 岩手県 岩手県 宮城県 宮城県 秋田県 秋田県 山形県 山形県 福島県 福島県
このテーブルに、以下のような、県名1でソートするSELECT文を発行してみます。
SELECT * FROM test.dbo.都道府県
Order by 県名1
Collate Japanese_Bin
結果は以下。ほぼ「あいうえお」順。「岩手」は"岩"が訓読みの"いわ"ではなく音読みの"ガン"でソートされていると思えば、完全に「あいうえお」順です。
…以下略
県名1 県名2 愛知県 愛知県 愛媛県 愛媛県 茨城県 茨城県 岡山県 岡山県 沖縄県 沖縄県 岩手県 岩手県 岐阜県 岐阜県
では、次に、ソート列を県名1から県名2に変更してみます。
SELECT * FROM test.dbo.都道府県
Order by 県名2
Collate Japanese_Bin
県名1と県名2の内容は同じなので、結果は同じかと思いきや…
…以下略
県名1 県名2 三重県 三重県 京都府 京都府 佐賀県 佐賀県 兵庫県 兵庫県 北海道 北海道 千葉県 千葉県 和歌山県 和歌山県
あーら不思議。なんかよくわからない順番になっちゃったー(棒
同じデータをソートしているのになんでー(棒
知らないとはまりそうです。上記のようなケースはほぼないでしょうが、「SQLではうまくソートするけど、VBでやるとうまくソートできない」とかはありそう。そしてなぜかわからず長時間はまる。ああ怖い。