在SQL Server 2008中将varchar转换为decimal

3

我有一个 varchar 类型的数据 '00072330',如何在 SQL Server 2008 中将其转换为类似于 '723.30' 的十进制数?

2个回答

9

试试这个:

declare @data as varchar(8)
set @data = '00072330'
print cast(@data as decimal) / 100

3

This:

SELECT CAST('00072330' AS INT)/100.0

你将得到:

723.300000

小数点后的“.0”很重要,否则SQL Server会执行整数运算。


1
需要使用.0是因为你将其转换为整数;转换为小数不需要它。 - Rubens Farias
是的,但为什么在转换为十进制时不更明确呢?如果您知道您只能使用8个字符(两个小数位),我宁愿看到AS DECIMAL(8,2)而不仅仅是AS DECIMAL。因人而异。 - Aaron Bertrand
我认为转换的关键是因为精度不一致。但你提到在强制转换时设置精度确实是一个好点子。我对SQL Server数据类型还不太熟悉。 - OMG Ponies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接