如何在 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?
sql server 中数据类型numeric我用小数点后两位,可是小数点前没有0