Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2005 varchar在转换为小数时丢失小数位数_Sql Server_Decimal - Fatal编程技术网

Sql server SQL Server 2005 varchar在转换为小数时丢失小数位数

Sql server SQL Server 2005 varchar在转换为小数时丢失小数位数,sql-server,decimal,Sql Server,Decimal,为什么?试试Set@BadDecimal='4,5'转换或转换为显式十进制(数字、精度)的方法: SQLServer帮助说明(数字、精度)的每个组合都作为单独的数据类型处理。试试看 SELECT CONVERT(DECIMAL(5, 2), '4.5') SELECT CAST('4.5' AS DECIMAL(5,2)) 编辑:在请求后改为(2,1)。科恩杰击败了我 您需要使用此格式Decimal(p,s)声明小数 p=小数点左侧和右侧可存储的最大小数位数总数。精度必须是从1到最大精度38之

为什么?

试试
Set@BadDecimal='4,5'
转换或转换为显式十进制(数字、精度)的方法:

SQLServer帮助说明(数字、精度)的每个组合都作为单独的数据类型处理。

试试看

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

编辑:在请求后改为(2,1)。

科恩杰击败了我

您需要使用此格式Decimal(p,s)声明小数

p=小数点左侧和右侧可存储的最大小数位数总数。精度必须是从1到最大精度38之间的值。默认精度为18


s=小数点右侧可存储的最大小数位数。比例必须是从0到p的值。仅当指定了精度时,才能指定比例。默认比例为0;因此,0如果您在字符串中使用参数@BadDecimal,这将不起作用谢谢,我很高兴为您服务您可能应该编辑您的帖子。十进制(2,2)不正确。存储4.5的精度和刻度的最小值为十进制(2,1)。最好是第一;-)通常情况下,我只是有点太慢了。
SELECT CONVERT(DECIMAL(5, 2), '4.5')
SELECT CAST('4.5' AS DECIMAL(5,2))
Declare @GoodDecimal Decimal(2,1)