プロが教えるわが家の防犯対策術!

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

A 回答 (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 …

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

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

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

この回答への補足

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

補足日時:2009/04/15 11:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!