如何在 SQL Server 中显示小数点后两位数

Posted

技术标签:

【中文标题】如何在 SQL Server 中显示小数点后两位数【英文标题】:How to display two digits after decimal point in SQL Server 【发布时间】:2013-12-05 19:45:46 【问题描述】:

我的表在SQL Server 中有一个float 数据类型的列 我想返回我的 float 数据类型列值,小数点后 2 位。

例如:如果我插入12.3,它应该返回12.30

如果我插入12,它应该返回12.00

【问题讨论】:

【参考方案1】:
select cast(your_float_column as decimal(10,2))
from your_table

decimal(10,2) 表示您可以使用最大总精度为 10 位的十进制数。其中小数点后2个,小数点前8个。 可能的最大数字是99999999.99

【讨论】:

非常感谢...它节省了我所有的 C# 代码更改时间。请您解释一下 10 在十进制中的含义(10,2) (10,2) 定义十进制值的精度。逗号后的10 数字和2 数字。 @juergend 嗨,我正在尝试像 select cast(50/20 as decimal(5,2)) from sometable limit 1 这样的简单查询,但输出是 2.00(应该是 2.5)。 @Moosa:因为它会在投射之前进行计算。然后它已经四舍五入到2。只需使用select 50 / 20.0。由于20.0 已经是小数,因此转换按预期工作。见sqlfiddle.com/#!3/9eecb7/8216 @stom:只计算数字。【参考方案2】:

你也可以做一些更短的事情:

SELECT FORMAT(2.3332232,'N2')

【讨论】:

我更喜欢这个 cast(your_float_column as decimal(10,2)) 因为我不知道我的小数有多大。 请注意,这会将类型更改为 NVARCHAR。【参考方案3】:

你也可以使用下面的代码来帮助我:

select convert(numeric(10,2), column_name) as Total from TABLE_NAME

其中Total 是您想要的字段的别名。

【讨论】:

我认为这是做同样事情的另一种方式。 这是一个公平的说法。【参考方案4】:

如果您还想进行投射和回合,也可以使用以下功能。这可能会对您或其他人有所帮助。

SELECT CAST(ROUND(Column_Name, 2) AS DECIMAL(10,2), Name FROM Table_Name

【讨论】:

select cast(round(12311313.1,2) as decimal(10,2)) from dual --> 12311313.1【参考方案5】:
select cast(56.66823 as decimal(10,2))

这将返回56.67

【讨论】:

您对 OP(原始海报)要求的回答是正确的,但不是描述性的。此外,您还发布了一个 4 年前提出的问题,并且正确答案与您的相似,甚至可能更好。最好在旧帖子上回答,但前提是它有一个过时的答案。

以上是关于如何在 SQL Server 中显示小数点后两位数的主要内容,如果未能解决你的问题,请参考以下文章

DB2中如果转换数值显示为两位小数,并显示千分位逗号要怎么写SQL?

C#中如何只保留小数点后面两位?

sql server 中数据类型numeric我用小数点后两位,可是小数点前没有0

SQL Server 2008:为啥不四舍五入到小数点后两位?

sql 里怎么用语句裁断小数点后两位

sql查询结果保留两位小数,如何做?