我正在尝试将数字转换为带小数点后两位的小数。
SELECT CONVERT(DECIMAL(10,2),12345)
以上将返回12345.00,但我试图达到123.45
答案 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
。在这种情况下,您需要在分割之前将初始值转换为numeric
或decimal
:
SELECT CONVERT(DECIMAL,12345)/100
或
SELECT CAST(12345 AS DECIMAL)/100
(cast
是SQL标准,因此如果您想将其应用于其他数据库,那么它将是首选方法。)
或者,您可以向除数添加小数点,因为SQL服务器在对异构类型进行算术运算时将返回更精确的数据类型:
SELECT 12345/100.0
According to the documentation,numeric
数据类型在功能上等同于decimal
数据类型,因此实际上没有理由在两者之间进行转换。看来你真正想做的就是将你拥有的价值除以100:
SELECT 12345/100