私はSQL Serverの列の10進数データ型を把握しようとしています。 15.5、26.9、24.7、9.8などの値を格納できるようにする必要があります。
decimal(18, 0)
を列のデータ型に割り当てましたが、これらの値を格納することはできません。
これを行う正しい方法は何ですか?
DECIMAL(18,0)
は小数点の後に0桁を許可します。
代わりにDECIMAL(18,4)
のようなものを使ってください。
それはあなたに合計18桁を与えます。そのうち4桁は小数点の後(そして小数点の前は14)です。
あなたが使用する必要があります次のとおりです。
DECIMAL(m,a)
m
は、小数点以下の桁数の合計です。
a
は、小数点以下の最大桁数です。
http://www.tsqltutorials.com/datatypes.php にすべてのデータ型の説明があります。
Decimal
の設定は、その精度と位取り、あるいは通常の言語では、数字の桁数と小数点以下の桁数です。
それであなたがPI
をDecimal(18,0)
に入れると、それは3
として記録されるでしょうか?
PI
をDecimal(18,2)
に入れると、3.14
として記録されますか?
PI
をDecimal(18,10)
に入れると、3.1415926535
として記録されます。
ほとんどの場合、10進数(9,2)を使用します。これは、SQL 10進数型で最小の記憶領域(5バイト)を使用します。
精度=>格納バイト
0から最大9 999 999.99までの範囲で格納できます(前7桁+小数点の後2桁=合計9桁)。これは、ほとんどの値に十分な大きさです。
MySQL DBでは、decimal(4,2)
は合計4桁の数字しか入力できません。 decimal(4,2)
に見られるように、それはあなたが合計の4桁を入力できることを意味します。そのうち2桁は小数点以下を維持するためのものです。
そのため、MySQLデータベースに100.0と入力すると、「列の範囲外の値」のようなエラーが表示されます。
そのため、00.00から99.99の範囲でしか入力できません。
あなたはこれを試すことができます
decimal(18,1)
数字の長さは合計18にする必要があります。小数点の後の数字の長さは1だけで、それ以下にする必要があります。
他の答えは正しいです。あなたの例があなたが望むものの可能性の全範囲を反映すると仮定するとDECIMAL(3, 1)
です。または、DECIMAL(14, 1)
では合計14桁が許可されます。十分なものについて考えるのはあなたの仕事です。
request.input("name", sql.Decimal, 155.33) // decimal(18, 0)
request.input("name", sql.Decimal(10), 155.33) // decimal(10, 0)
request.input("name", sql.Decimal(10, 2), 155.33) // decimal(10, 2)