Sql server 2005 是否将此varchar转换为具有适当小数点的十进制?
我一直在玩演员之类的游戏,似乎无法让事情正常进行。我有一个18个字符长的varchar字符串,我想将其转换或转换为十进制,小数点后五位。例如,这个字符串: 00000001987600130 将成为19876.00130 在这种情况下,我总是有一个17个字符的字符串,最后五个字符保留为小数点 我一直在玩演员和皈依者的游戏,但我还没有完全做到这一点。举例来说,这些陈述让我有点接近,但并不确切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
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))
否则,输出类型的比例或精度不正确,可能会在以后产生影响。感谢您的两个答案!谢谢你的两个答案!