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

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

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

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

【问题讨论】:

    标签: sql-server sql-server-2008 sqldatatypes


    【解决方案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 年前提出的问题,并且正确答案与您的相似,甚至可能更好。最好在旧帖子上回答,但前提是它有一个过时的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多