如何转换为十进制列值

时间:2012-06-11 08:57:11

标签: sql sql-server sql-server-2000

使用SQL Server 2000

table1

id values (datatype is nvarchar)

001 12:10 
002 01:25
003 10:01
004 21:20

我想将values列转换为float ..

尝试查询

Select id, Cast(Replace(values, '':'', ''.'') as float) as values from table1

输出显示为

001 12.1 'zero is not showing
002 01.25
003 10.01
004 21.2 'zero is not showing

为什么零隐藏......?对于float数据类型,2.10或2.1是相同的,但是用户会混淆2.1,比如2小时1分钟而不是2小时10分钟...

如何解决这个问题

预期产出

id values (datatype is float)

001 12.10 
002 01.25
003 10.01
004 21.20

需要SQL查询帮助

2 个答案:

答案 0 :(得分:2)

12.1012.1都是相同浮点数的字符串表示(十二加十分之一)。如果您希望数据类型为 float ,则无法指定其字符串表示形式。你只能在一个浮点数转换成一个字符串时这样做,这在你的情况下是一个毫无意义的练习(因为你已经将这个值作为一个字符串)。

另一种数据类型,而不是 float ,例如 decimal ,它具有固定的小数位数,可能是您的任务更合适的选择

答案 1 :(得分:0)

尝试

Select id, Cast(Replace(values, '':'', ''.'') as DECIMAl(10,2)) as values from table1