こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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句を細かく指定していないので、データ並びが違うのはしょうがないと思うのですが、件数が違うのはどういうことでしょうか?
データに規則性が無いので、どこがおかしいのか?という見当もつかない状態です。
データベースにデータを移植する際の注意点、上記の現象等の回避策等がありましたら教えてください。
宜しくお願いいたします。

投稿日時 - 2009-04-15 09:51:17

QNo.4880732

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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

複数表とジョインしているので、比較の設定が異なるせいな気がします。

ジョインで複数件数が返ってきている気がしますので、該当データを確認してください。

投稿日時 - 2009-04-15 11:52:37

ANo.1

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

投稿日時 - 2009-04-15 10:44:35

補足

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

投稿日時 - 2009-04-15 11:04:20

あなたにオススメの質問