SQLサーバー7.0SP2 からSQLサーバー2000SP3A
にDBの更新をしましたが、テーブルをODERBYの
指定なしだと表示される順番が違います。
これは、コード体系が変更になったせいでしょうか。
あるいは、SQL7.0のまま表示順をパラメーターで変更等ができますか。
よろしくお願いします。
Yahoo! JAPAN
多くのRDBMSではデータをシーケンシャルに格納せずに、検索効率やデータ効率などを考慮して最適な箇所に格納するため、ソート条件を指定しない限りは格納順にデータを取得することはできません。
ただしデータを格納し始めた最初の頃は、近くに保存されることがある為、ソート順を指定しなくても順序正しく取得できることもあります(が、保障はされません)
その為、思い通りのソート順でデータを取得するためには、やはりORDER BY句を指定してあげる必要があります。
http://support.microsoft.com/kb/314546/ja/
SQL Server を実行しているコンピュータ間でデータベースを移動する方法
SQL Server 7.0 と SQL Server 2000 では、既定の照合順序が異なりますので、
その影響を受けているのだと思います。
sp_detach_db / sp_attach_db を使用して、データ移行を行った場合は、
移動元の照合順序が保持されるようです。
また、ALTER TABLE で COLLATE 句を使用すれば、一応、後から照合順序を変更できたかと
思いますが、列ごとに設定しなければならず、大変面倒だったと記憶しています。
一番確実なのは、ORDER BY 句を指定することだとは思いますが・・・。
http://support.microsoft.com/kb/270042/ja/
SQL Server の互換性照合順序について
URL は照合順序に関する情報です。
http://www.microsoft.com/japan/msdn/sqlserver/sql2000/IntlFeatur...
Microsoft SQL Server 2000 のインターナショナル機能
参考情報です。
・SQL Server 7.0 の照合順序
・SQL Server 2000 の照合順序
に関する情報が記載されています。
コメント(2件)
私が回答した「照合順序」は、ORDER BY 無しのときの
ソート順とは関係ないようです。
知ったかぶりな回答をしてしまい、申し訳ございません。
id:andi さんの回答にあるように、ORDER BY 指定がない場合の
ソート順は、DB に INSERT した順番になるケースが多いようです。
ポイントはお返し致します。
また、
http://www.hatena.ne.jp/1120546566
にて、同じ回答をしてしまい、恥ずかしい限りです。
穴があったら入りたい・・・_| ̄|○
以後、気をつけます。m(_ _)m
--
↓ このあたりが参考になるのでは?と思います。
■ レコードの並べ替え(整列)〜ORDER BY句
http://www.grapecity.com/japan/devclub/Consultants/how_to_database/003/page02.htm
自分もちゃんと読んでおこうと思います。
--