MS SQL Server2008と Oracle 11gで同じ検索結果(順序)にすることはできるのか(2)
昨日の整理として、MS SQL Server2008のBINとBIN2では比較の違いがあり、
メソッド | 方法 |
---|---|
BIN | 単純に先頭から2バイト単位で取得して比較 |
BIN2 | コードポイントを意識して比較 |
ということでした。
具体的にどう困るのかというポイントに関しては、
- ソート順序が変わる。具体的にはspaceが先に来るのがBIN
- 比較(LIKE文など)で差が出る
というところです。
今回は1番目に絞って検証しました。比較も重要ですけど。
0〜42までのコードをテーブルにインサートして、BIN(MSSQL)、BIN2(MSSQL)、BINARY(ORACLE)で結果を見てみることにします。
予想としては、BINはスペースが先頭に来るはずですね。
次にBIN2の結果です。
最後にBINARYの結果です。
BINARYの場合も、BINのようにspaceが先頭に来なくて良かったです。
この結果をもって、BIN2(MSSQL)=BINARY(ORACLE)とはとても言えないですが、ORACLEのマニュアルにもあるとおり、BINARYはコードポイントを意識してソートしていると思います。