写一个带有两个小数位的SQL服务器的数字

145 sql sql-server decimal number-formatting

如何为sql server编写带小数位数的两位数?

小智 194

试试这个

SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)
Run Code Online (Sandbox Code Playgroud)

  • 如果这是十年前的答案,那就没有了。此方法会将10.11111变成10.00。 (2认同)

Cha*_*ana 62

使用Str()功能.它需要三个参数(数字,要显示的总字符数,以及要显示的小数位数)

  Select Str(12345.6789, 12, 3)
Run Code Online (Sandbox Code Playgroud)

显示:'12345.679'(3个空格,5个数字12345,一个小数点和三个十进制数字(679). - 如果必须截断,它会舍入,(除非整数部分对于总大小太大,在这种情况下而是显示星号.)

总共12个字符,小数点右边有3个字符.


小智 35

通常,您可以通过使用参数定义数字来定义数字的精度.对于大多数情况,这将是NUMERIC(10,2)Decimal(10,2)- 将列定义为一个数字,总数为10,精度为2(小数位).

编辑清晰

  • 出于几个原因这是错误的.它不是数字,它是数字或小数.你说数字(10,2)允许小数点前10位,这也是错误的.数字(10,2)允许小数点后2位的10位总数.范围= -99999999.99至99999999.99 (9认同)
  • 它也可以声明为DECIMAL(10,2). (4认同)

Moh*_*dan 14

这项工作对我而言始终保持两位数的分数

23.1 ==> 23.10

25.569 ==> 25.56

1 ==> 1.00

Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2
Run Code Online (Sandbox Code Playgroud)

代码截图

  • 尝试上面的Charles Bretana的STR()函数.它的工作方式与您的公式相似,但会对您的25.569示例进行四舍五入. (2认同)

Clu*_*Tim 13

这就是孩子们今天这样做的方式:

DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')
Run Code Online (Sandbox Code Playgroud)

123.46

  • 我认为您很可能想使用“0.00”而不是“#.##”。# 将忽略尾随零,因此 5.10 将变为 5.1,或者 4.00 将仅显示 4。“0.00”格式将确保您始终精确到小数点后两位。 (3认同)
  • FORMAT 功能从 2012 版本开始可用。 (2认同)

小智 11

如果你只需要两位小数,最简单的方法是......

SELECT CAST(12 AS DECIMAL(16,2))
Run Code Online (Sandbox Code Playgroud)

要么

SELECT CAST('12' AS DECIMAL(16,2))
Run Code Online (Sandbox Code Playgroud)

产量

12.00
Run Code Online (Sandbox Code Playgroud)


ant*_*ine 6

如果您可以将数字四舍五入而不是截断它,那么它只是:

ROUND(column_name,decimals)
Run Code Online (Sandbox Code Playgroud)