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

csvファイルを読み込んでデータベースのデータと比較して異なっていた場合は更新するようにしたいと考えています。

csvデータ…10
データベースから取得したデータ…10.0
※比較するテーブルのフィールドのデータ型はFLOAT型です。

文字列を数値変換して比較、またはデータベースから取得したデータを文字列に変換して比較、どっちがいいのでしょうか。
またどのように比較すればいいのでしょうか。

くだらない質問かもしれませんが宜しくお願いします。

A 回答 (3件)

No1の方が言いたいこと良くわかります。

けして、質問の意味取り違えていませんよ。

>文字列を数値変換して比較、またはデータベースから取得したデータを文字列に変換して比

問題になるのは、対象となるデーターの背景です。何のデーターを対象としているかです。

例えば、計測又は計量したデーター10.10 と10.1 では意味が違いますね。10.10では100分の1まで計測したが100分の1は0だったという意味です。10.1は10分の1までの計測で、100分の1の値は不明と言うことです(又は四捨五入などの圧縮したデーター)。

数値的には同じ10.1ですが、何桁で扱うかが問題になります。DBでデーター型で扱う利点は、このような時に精度をそろえられるところにあります。文字列として扱ってしまうと、余計な(0と言う文字を追加)作業が出てくる場合もあります。

逆にそんなのどうでもいい、と言う場合もたくさんあり、ケースbyケースです。

文字列として"10.10" == "10.1"なるのかと言う問題ですね。これを==で結びたいときは数値として扱うべき、そうでない時は文字列として扱うと簡単です。

と言うことで回答はケースbyケースです。
    • good
    • 1

doubleのフィールドに格納した時点で精度は失われている(10.10と10.1の区別はつかなくなっている)ので文字列に変換し比較

する理由はないのでは?
    • good
    • 0

プログラム言語(バージョン)、データベース種別、接続環境、などがないので具体的なことはいえませんが、方法としては、



CSVファイルを開き1件ずつデータを読み、
ユニークキー情報となるものを元に対象レコードを開き
比較し、
違うものに関しては更新する。

データベースのデータ型で比較するのが良いと思います。
>またどのように比較すればいいのでしょうか。
VBではif文を使って比較しますが、なんか質問の意味を取り違えているような気が、、、

件数によっては、

DBに比較用のテーブルをつくり、
CSVレコードをDBに登録し、
SQLにて元テーブルをアップデートをする。

というような方法もありえると思います。

この回答への補足

回答ありがとうございます。

説明不足ですみません。
開発言語:VB.net(Visual Studio 2005)
データベース:SQL Server 2005

データベースから取得してDataSetに格納しています。
この取得したDataSetの値とCSVの値が異なっているかをIF文で比較したいと考えています。

データベースから取得したDataSetの値を確認したら「10.0」でDouble型でしたのでCSVの値(10)を
Double型に変換しないといけないのかと思って・・・

再度、アドバイスいただけませんでしょうか。
宜しくお願いします。

補足日時:2010/10/26 11:20
    • good
    • 0

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


このQ&Aを見た人がよく見るQ&A