0
Declare @BadDecimal varchar(5)
Set @BadDecimal = '4.5'
Declare @GoodDecimal Decimal
Set @GoodDecimal = @BadDecimal
Select @GoodDecimal

--Outputs 5

なんで?

4

4 に答える 4

6

試す

Declare @GoodDecimal Decimal(2,1)

編集: リクエスト後に (2,1) に変更されました。

于 2008-12-24T09:58:24.183 に答える
4

Coentjie が私を打ちのめしました argggg...

この形式 Decimal(p,s) を使用して小数を宣言する必要があります

p = 小数点の左右両方に格納できる 10 進数の最大合計桁数。精度は、1 から最大精度 38 までの値でなければなりません。デフォルトの精度は 18 です。

s = 小数点の右側に格納できる 10 進数の最大桁数。Scale は 0 から p までの値でなければなりません。位取りは、精度が指定されている場合にのみ指定できます。デフォルトのスケールは 0 です。したがって、0 <= s <= p です。最大ストレージ サイズは、精度によって異なります。

于 2008-12-24T10:07:53.087 に答える
1

試すSet @BadDecimal = '4,5'

于 2008-12-24T09:50:54.307 に答える
1

明示的な10進数(数字、精度)へのキャストまたは変換は機能します:

SELECT CONVERT(DECIMAL(5, 2), '4.5')
SELECT CAST('4.5' AS DECIMAL(5,2))

SQLServer ヘルプには、(数字、精度) の各組み合わせが個別のデータ型として処理されると記載されています。

于 2008-12-24T09:54:25.487 に答える