我想知道是否有办法将SQL中的浮点数转换为小数点后的零填充数,例如,如果我有下表:
.--------------------.-------.
| name | grade |
.--------------------.-------.
| courseE | 5 |
| courseG | 4 |
| courseB | 2.5 |
| courseC | 2.5 |
| courseF | 1.25 |
| courseD | 0 |
我想将字段grade
转换为zerro填充数字,结果如下:
.--------------------.-------.
| name | grade |
.--------------------.-------.
| courseE | 5.000 |
| courseG | 4.000 |
| courseB | 2.500 |
| courseC | 2.500 |
| courseF | 1.250 |
| courseD | 0.000 |
我试图通过usibg CAST(EXP) AS FLOAT
将字段等级转换为float,但为什么它不能与我一起使用?!
提前致谢
答案 0 :(得分:1)
select convert(decimal(10, 3), @number)
数字“3”表示“。”之后所需的小数位数。
答案 1 :(得分:1)
您的错误始于float
- 因为CAST()
转换没有此类数据类型可用。相反,您应该使用DECIMAL
,这也允许您设置小数和数字部分:
SELECT name, CAST(grade AS DECIMAL(4, 3)) FROM t
关于格式:第一个数字表示保留decimal
值的总位数,而第二个数字表示十进制位数(即之后)点)。更确切地说,它不是格式,它是某些数据类型限制定义(因为decimal
是MySQL中的特殊定点数据类型)< / p>