2013-04-05 8 views
14

SQL Server 2008 R2では、DECIMAL(おそらくNUMERIC)というタイプの質問があります。SQL Serverの小数点以下の桁数 - これは可能かもしれませんか?

MSDNは言った:

(スケール) 小数点の右側に格納できる桁の最大数。スケールは、0〜pの値でなければなりません。私はDECIMAL(10, 5)を持っている場合

  • - 私は12345.12345または12345678.91を格納することができる午前:

私はこの次の方法を理解しています。

  • 私はDECIMAL(5, 5)を持っている場合 - それは明確に私がなど12345または1234.5または1.2345を持つことができます...
  • ですか?

    しかし、私は、このエラーメッセージが表示されました:データ型の数値に数値変換

    SELECT CAST(2.8514 AS DECIMAL(5,5)) 
    

    算術オーバーフローエラー。

    5,5は、5桁まで、5桁までは小数点以下にすることができます。私は

    をしようとしたとして:

    SELECT CAST(12.851 AS DECIMAL(6,5)) - overflows too 
    

    しかし

    SELECT CAST(1.23456 AS DECIMAL(6,5)) - is OK. 
    

    だから、真実は何ですか?

    DECIMAL(a,b)は、私は数字にすることができ、それらのうちのbは小数点に正しく(そして、dec。ポイントに左にa-bを置く)と言いますか?

    私は実際にはどこにでもコピーされたdocのステートメントについては混乱しています。しばらく時間を取って、この簡単なことを私に説明してください。

    ありがとうございます!

    +0

    'DECIMAL(5,5)'は以下を意味します:5桁の合計は5桁です**小数点以下** - 基本的にこれは有効な数字ではありません...'DECIMAL(10,5)'は、合計10桁、**は小数点の後**(したがって、小数点以下5桁も)の5つを意味します。 ***小数点の後の*** ***小数点の指定 –

    +2

    @marc_s私はOPが混乱している理由はまさにそうだと信じています:http: //msdn.microsoft.com/en-us/library/ms187746.aspx)は「can」という単語のみを使用しているので、小数点以下5桁の 'reserved'それらを使用するかしないか。たぶん、数学的に傾斜した人々にとってはもちろん、(私はその人の一人でもない)明らかです。 – Pondlife

    +0

    @Pondlifeあなたは、ドキュメントが混乱しているということについて実際に正しいです。 2013年には、MSDNにバグレポートを提出し、http://stackoverflow.com/questions/12207222/decimal-10-9-variable-cant-hold-the-number-http: 50-sql-server-2008 –

    答えて

    19

    これは私にとっては最も簡単な方法です。精度は桁数の合計です。のうち、小数点以下の桁数はです。したがってDECIMAL(p,s)は、ポイントの左側にp-s桁、右側にs桁を意味します。

    表示されているすべての変換エラーを説明しています。2.8514decimal(5,5)にできません。p-s = 0です。 12.851decimal(6,5)となることはできません。p-s = 1などです。

    関連する問題