QUESTION(SQ0501056)
データベースをバージョンアップしたら、データのソート順が変わった。
(NULL の位置が違う)
ANSWER
ORDER BY 句の動作は Anywhere 8.0.x から仕様が変更されました。
Anywhere 8.0.x より前のバージョンでは、カラムにインデックスがある場合の ORDER BY 句の動作がインデックスが無い場合と異なり、ソートの結果に一貫性がございませんでした。
Anywhere 8.0.x 以降では、ORDER BY 句の結果の一貫性を保つ為に、 NULL は常に
NULL 以外の値より小さい値としてソートされます。
なお、大変申し訳ございませんが、Anywhere 8.0.x のマニュアルでは
「ORDER BY がある場合、ソート順が昇順と降順のどちらであっても、 NULL は他のすべての値の前に来ます。」
と前バージョンの仕様が誤って記載されております。
Anywhere 8.0.x 以降では
「ORDER BY では、ソート順が昇順の場合、 NULL はほかのすべての値の前に来ます。」
が正しい仕様となります。
この誤りはAnywhere 9.0.x 以降のマニュアルでは修正されております。
上記 ORDER BY 句の動作につきましては以下のマニュアルに記載されております。
ASA SQL ユーザーズ・ガイド
クエリ結果の要約、グループ化、ソート
ORDER BY 句:クエリ結果のソート
|