• 締切済み

DB接続先をPostgreSQLからSQLServerへ変更したらSQLの結果が違う

データベースの接続先をPostgreSQLからSQLServerへの変更作業をしています。 PostgreSQL 8.1.9 --> SQLServer2005 ひとつ、変な現象が起きています。 移植前と移植後のDBで実行したSQLの検索結果が違いました。 SELECT a.ro_no, b.data_name FROM table_1 a, table_2 b, table_3 c WHERE b.data_name <> '' AND a.code_no = b.code AND a.user_id = c.user_id ORDER BY a.ro_no, b.data_name; ORDER句を細かく指定していないので、データ並びが違うのはしょうがないと思うのですが、件数が違うのはどういうことでしょうか? データに規則性が無いので、どこがおかしいのか?という見当もつかない状態です。 データベースにデータを移植する際の注意点、上記の現象等の回避策等がありましたら教えてください。 宜しくお願いいたします。

みんなの回答

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

>SELECT > a.ro_no, > b.data_name >FROM table_1 a, > table_2 b, > table_3 c >WHERE b.data_name <> '' > AND a.code_no = b.code > AND a.user_id = c.user_id >ORDER BY a.ro_no, b.data_name; SQL Serverの照合順序はどうなっていますか? これは比較の際に大文字小文字を区別するかどうかなどを指定します。 以下URL参照 http://msdn.microsoft.com/ja-jp/library/ms187582.aspx 複数表とジョインしているので、比較の設定が異なるせいな気がします。 ジョインで複数件数が返ってきている気がしますので、該当データを確認してください。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

移行方法がわかりませんが、移行時に空文字がNULLに変わってしまったということはあり得ますか?

jobvba
質問者

補足

javaで、データベースを移行するためのプログラムを作成しました。 カラムの型は、データベースに合わせて動的にカラム型を変更しています。 急いで作ったので、ミスはありました。空文字とNULLのチェックを行い、修正した記憶があります。 しかし検索結果が同じでした。件数も修正前のものと一緒でした。 SQLにIS NOT NULLの条件式を加えても、同じ結果でした。 おかしいと思うのは、SQLServer2005側で上記SQLを実行すると、PostgreSQLの検索結果より多い点です。 あと、移植後の各テーブルのレコード数は一致していることを確認しています。

関連するQ&A