SQL ServerとOracleではキャッシュのおかげで若干異なる動作をする。
例えば、あるテーブルのある主キー列に「a,b,g,h,i」って感じでデータが入っているとする。このとき、テーブルに「c」を追加して、ORDER BY句を付けずにSELECT文を発効するとどうなるか。
a,b,c,g,h,i
a,b,g,h,i,c
ただ、タイミングによっては必ずしもこうはならない。
SQL Serverは、ORDER BY句が無い場合主キーで整列を自動的に行う(らしい)。
Oracleは、ORDER BY句が無い場合の動作はどうも一定ではない。
Oracleにはデータベースバッファキャッシュがあるおかげでこういう動作になるようなので、複数行返すSELECT文には基本的にORDER BY句つけるのが安全のようです。
また、Oracleはnullと空文字の区別がない。そのため、null・空文字・普通の文字が混在してる列を並べ替えるとOracleとSQL Serverでは異なる結果を返します。
-
- -
そういやぁ、DB間の差異をまとめたサイトがどこかにあった気がしたんだけど・・・失念してしまった。
関連:http://www.itmedia.co.jp/enterprise/0307/25/epn20.html