Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 2005 是否将此varchar转换为具有适当小数点的十进制?_Sql Server 2005_Casting_Decimal_Varchar - Fatal编程技术网

Sql server 2005 是否将此varchar转换为具有适当小数点的十进制?

Sql server 2005 是否将此varchar转换为具有适当小数点的十进制?,sql-server-2005,casting,decimal,varchar,Sql Server 2005,Casting,Decimal,Varchar,我一直在玩演员之类的游戏,似乎无法让事情正常进行。我有一个18个字符长的varchar字符串,我想将其转换或转换为十进制,小数点后五位。例如,这个字符串: 00000001987600130 将成为19876.00130 在这种情况下,我总是有一个17个字符的字符串,最后五个字符保留为小数点 我一直在玩演员和皈依者的游戏,但我还没有完全做到这一点。举例来说,这些陈述让我有点接近,但并不确切 select CAST('00000001987600130' as bigint)/100000.0

我一直在玩演员之类的游戏,似乎无法让事情正常进行。我有一个18个字符长的varchar字符串,我想将其转换或转换为十进制,小数点后五位。例如,这个字符串:

00000001987600130

将成为19876.00130

在这种情况下,我总是有一个17个字符的字符串,最后五个字符保留为小数点

我一直在玩演员和皈依者的游戏,但我还没有完全做到这一点。举例来说,这些陈述让我有点接近,但并不确切

select CAST('00000001987600130' as bigint)/100000.0

select (convert(decimal(17,5),left('00000001987600130',12),0))

如果你有什么建议,我很乐意尝试。谢谢

这对我来说很好:

SELECT CONVERT (decimal, '00000001987600130') / 100000

第一个不起作用的原因是因为强制转换的结果是一个整数,将一个整数除以100000轮/截断它,但不确定是哪个整数,因此它仍然是一个整数。

这对我来说很好:

SELECT CONVERT (decimal, '00000001987600130') / 100000

第一个不起作用的原因是因为强制转换的结果是一个整数,将一个整数除以100000轮/截断它不确定哪个整数,因此它仍然是一个整数。

为了确保得到想要的结果,请执行最后一个强制转换以确保小数点17,5准确无误

SELECT CAST((CAST('00000001987600130' AS decimal) / 100000) AS decimal(17,5))

否则,输出类型的比例或精度不正确,可能会在以后产生影响。

为确保得到所需的结果,请进行最终转换,以确保小数点17,5准确无误

SELECT CAST((CAST('00000001987600130' AS decimal) / 100000) AS decimal(17,5))

否则,输出类型的比例或精度不正确,可能会在以后产生影响。

感谢您的两个答案!谢谢你的两个答案!