【问题标题】:SQL Rounding QuerySQL 舍入查询
【发布时间】:2014-10-14 07:14:41
【问题描述】:

我一直在做很多研究,试图找到我的问题的答案。

我正在尝试找出当数字小于一时需要使用哪种语法进行舍入。

例如 选择 17 月 26 日

在 SQL 中运行时,它显示为零,但是我试图让它返回 0.65 的答案。

我尝试过使用 ROUND、CAST AS Numeric、Decimal 以及 Money。

到目前为止......没有运气

任何帮助将不胜感激。

【问题讨论】:

  • 既然你提到money,那么这是sql-server吗?此外,转换为其他类型应该有效 - 您是否仍有尝试,以便您可以在您的问题中包含实际尝试?
  • 你是投分子分母还是结果?我怀疑您正在转换整数除法的结果。
  • 通常方程由 2 个变量完成,例如“@Value1/@Value2”。但是因为在这个结果上,它拉回了一个小于零的数字,所以这不起作用。我被投了“SELECT CAST (17/26 AS Numeric (10,2))

标签: sql sql-server syntax rounding


【解决方案1】:

试试这个

SELECT round(convert(float,17)/26,2)

【讨论】:

  • 太棒了:)。那已经奏效了。以供将来参考,您能否向我解释一下这是如何以及为什么起作用的。我已经在工作中使用 SQL 9 个月了,并且真正开始并想继续学习。我会很感激任何解释,在此先感谢
  • 您已将输出转换为浮点数,因此它对您不起作用。您需要在除法之前将分子或分母转换为浮点数,以使输出为浮点数。之后,只需将其四舍五入到小数点后 2 位。希望这对你来说很清楚:)
  • 是的,这对我来说很有意义:)。感谢您的帮助,不胜感激。
【解决方案2】:

不管它值多少钱,当我用一个实际的硬编码值做这样的事情时,我只是给其中一个元素添加一个小数位。 CAST() 更适合数据库字段,但如果您要输入内容,只需使用小数...

 SELECT 17/26, 17/26.0, 17.0/26

【讨论】:

    【解决方案3】:

    尝试强制引擎像这样管理浮点数(乘以浮点数“1.0”)...

    SELECT (1.0*17/26) as x;
    

    也可以圆...你可以这样写

    SELECT round((1.0*17/26),2) as x;
    

    (在 PostgreSQL 上尝试过并且有效)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多