Jam*_*Ide 2 sql-server precision
根据SQL Server 2008联机丛书中的十进制和数字数据类型条目,精度为:
p(精度)小数点左侧和右侧可存储的最大小数位数.精度必须是从1到最大精度为38的值.默认精度为18.
但是,下面的第二个选择失败,"算术溢出错误将int转换为数据类型数字".
SELECT CAST(123456789 as decimal(9,0))
SELECT CAST(123456789 as decimal(9,1))
Run Code Online (Sandbox Code Playgroud)
看到这里:http://msdn.microsoft.com/en-us/library/aa258832(SQL.80).aspx
十进制[(p [,s])]
p(precision) 指定小数点左侧和右侧可存储的最大小数位数.精度必须是从1到最大精度的值.最大精度为38.默认精度为18.
s(scale) 指定可以存储在小数点右侧的最大小数位数.比例必须是从0到p的值.只有在指定精度时才能指定比例.默认比例为0; 因此,0 <= s <= p.根据精度,最大存储大小会有所不同.
使用时decimal(p,s),可以考虑p要存储的总位数(无论小数点的左侧或右侧),以及s这些p位数中应有多少位于小数点右侧.
DECIMAL(10,5)= 12345.12345
DECIMAL(10,2)= 12345678.12
DECIMAL(10,10)= .1234567891
DECIMAL(11,10)= 1.1234567891
Run Code Online (Sandbox Code Playgroud)
您的示例代码失败:
SELECT CAST(123456789 as decimal(9,1))
Run Code Online (Sandbox Code Playgroud)
因为:
9 =精度(小数点左右的总位数)
1 =小数位数
(小数点右边的位数)(9-1)= 8(小数点左边的总位数)
并且您的值123456789需要小数点左边的9位数字.你需要decimal(10,1)或只是decimal(9,0)
| 归档时间: |
|
| 查看次数: |
4122 次 |
| 最近记录: |