SQL - 将数字转换为十进制

时间:2014-05-22 13:20:53

标签: sql sql-server tsql

我正在尝试将数字转换为带小数点后两位的小数。

SELECT CONVERT(DECIMAL(10,2),12345) 

以上将返回12345.00,但我试图达到123.45

3 个答案:

答案 0 :(得分:6)

你需要这样的东西:

SELECT CONVERT(DECIMAL(15,2),12345/100.0) 

答案 1 :(得分:2)

SELECT CONVERT(DECIMAL(10,2),CAST(12345 as float)/CAST(100 as float))

答案 2 :(得分:-3)

更正:前提存在一定缺陷,因为没有小数点的文字数字的数据类型为int,而不是问题所暗示的numeric。在这种情况下,您需要在分割之前将初始值转换为numericdecimal

SELECT CONVERT(DECIMAL,12345)/100

SELECT CAST(12345 AS DECIMAL)/100

cast是SQL标准,因此如果您想将其应用于其他数据库,那么它将是首选方法。)

或者,您可以向除数添加小数点,因为SQL服务器在对异构类型进行算术运算时将返回更精确的数据类型:

SELECT 12345/100.0

According to the documentationnumeric数据类型在功能上等同于decimal数据类型,因此实际上没有理由在两者之间进行转换。看来你真正想做的就是将你拥有的价值除以100:

SELECT 12345/100