2009-08-06 9 views
0

私はあるデータベースから別のデータベースにデータを移行しています。Oracle:列の移行値、ヌル、および0を返します

私は数値の列を持っています。いくつかの値、いくつかの0といくつかのヌルを含んでいます。私の直感は、すべての0をNULLに変換することです。これにより、オプションのユーザー提供の番号が保管されます。

すべての0をNULLに変換しない理由は何ですか?

+0

詳細は記載されていません。 「私はいくつかのデータを保存する必要があります。使用するデータ型は何ですか?」と漠然としています。 –

+0

データ型を追加しました。 – chris

答えて

1

issues with indexing NULLsがあります(一般にはそうではありません)。

0を使用する場合は0を使用します。代わりにNULLを使用すると、ソート順が変更され、算術演算(および比較)に影響します。 NULLは、値がないことを示すために使用されます。それらを0の代わりに使用すると(は値)、設計よりもむしろデザインを駆動するマイクロ最適化の良い例です。

+0

この列。実際にはめったに使用されません。つまり、15kレコードのうち約50レコードがデータを持っています。しかし、ある時点でアプリケーションが変更され、NULLの代わりに0が格納されました。 – chris

+0

ポイントは残っています:私は、0の代わりにNULLを格納することで得られるメリットよりも、データが意味するものにもっと興味を持っています。 – cletus

+0

count(field)はNULL以外のカウントだけを返します。 0をそこに残さないようにする良い理由 - 値はドルの金額なので、将来データの平均や数などを行うと便利です。 – chris

1

ゼロをゼロに変換しない理由の1つは、数学的に異なることを意味するということです。

  1. I数字(0,10,20)を有する場合、それらの平均値が10であるIがヌルにゼロを変換する場合、私は数字5と0を持っている場合、平均値は15
  2. なります一緒に追加して、5を作成します.0をNULLに変更し、一緒に追加してNULLを作成します。
  3. NULLSFIRSTを使用しない限り(NULL、-5、10)、NULL、-5および10のデフォルト順序は(-5,10、NULL)です。明らかに、0での順序付けは(-5、0、10)です。

したがって、これらが数値関数のために使用されている場合は、アプリケーションの要件(与えられていないもの)に従ってNULLとゼロを使用する必要があります。

多分、あなたがその数字が何を表しているかを示せば、あなたは役に立つ回答を得るかもしれません。

関連する問題