1. ホーム
  2. sql

[解決済み] SQL Serverにおけるnumeric、float、decimalの違いについて

2022-03-24 16:37:35

質問

とはどのような違いがあるのでしょうか? numeric , floatdecimal のデータ型と、どのような場面でどちらを使うべきかを教えてください。

あらゆる種類の金融取引(例:給与欄)において、どれが好ましいか、またその理由は?

解決方法は?

<ブロッククオート

を使用します。 フロート または リアル データ型 場合のみ が提供する精度は 10進数 (最大38桁)では不十分

  • 近似数値データ型(表3.3参照)は、指定された正確な値を格納するものではありません。 多くの場合 数値が格納される。 極めて近い の近似値である。( テクネット )

  • WHERE句の検索条件では、特に=と<>演算子でfloatやrealカラムを使わないようにしましょう。float および real 列は、> または < の比較に限定するのが最善です。( テクネット )

ということで、一般的に以下のような場合は、データ型としてDecimalを選択するのがベストです。

  • に収まる数であること。 小数点以下の精度 は10E38[~38桁]です。
  • Floatの方が記憶容量が小さい(計算速度も)ので、あまり気にならないかもしれません。
  • 金融アプリケーション、丸め誤差を含む演算、等値性チェックなど、正確な数値動作が必要な場合。( テクネット )

  1. 正確 数値データ型 10進数と数値 - MSDN
  • numeric = 10進数 (5〜17バイト)
    • は.NETではDecimalにマッピングされます。
    • SQLサーバーのデフォルトの(精度,スケール)パラメーターは両方とも(18,0)である。
    • scale = 小数点の右に格納できる最大桁数。
    • money(8バイト)とsmallmoney(4バイト)もExact Data Typeで、.NETではDecimalにマッピングされ、小数点以下は4桁になります( MSDN )
  1. 概算 数値データ型 floatとreal - MSDN
  • 実数(4バイト)
    • は.NETではSingleにマッピングされます。
    • realのISO同義語はfloat(24)
  • フロート(8バイト)
    • は.NETではDoubleにマッピングされます。

メインソース : MCTSの自己ペース訓練キット(検査70-433)。マイクロソフト® sqlサーバー® 2008のデータベースの開発 - 第3章 テーブル、データ型、および宣言的データ整合性 Lesson 1 - データ型の選択(ガイドライン) - ページ 93