【问题标题】:SQL query rounding down to nearest whole numberSQL 查询四舍五入到最接近的整数
【发布时间】:2019-11-04 17:25:01
【问题描述】:

我的 Access 查询中有一个字段是直接从同一数据库中的表中提取的。当我从表中提取值时,该值会向下舍入到最接近的整数。即 2.999 向下舍入为 2。我不希望查询中的字段进行任何舍入,我希望直接从我的表中获取数字。我尝试使用 Round([field],4) ,但这仍然不起作用,并将该字段向下舍入到最接近的整数。我该如何解决?我的 SQL 代码如下。

SELECT  t.Station_ID, t3.[Original_Cut_Height(m)]
FROM [Installs] AS t3 LEFT JOIN ON [Inputting Data] AS t on t.Station_ID = t3.Station_ID;

【问题讨论】:

  • 根据the ms-access documentation,如果没有给出第二个参数函数会舍入到最接近的整数。
  • @carmelle 。 . .您的查询中没有四舍五入的值。如果您看到“2”,那么您正在查看数据的应用程序正在将值转换为 2,或者数据库正在存储 2
  • 下面的代码仍在向下取整。 SELECT t.Station_ID, ROUND(t3.[Original_Cut_Height(m)],4) FROM [Installs] AS t3 LEFT JOIN ON [Inputting Data] AS t on t.Station_ID = t3.Station_ID
  • @GordonLinoff 好的,谢谢。如何检查该值是否正在转换为 2 或数据库是否将其存储为 2?我查询中的其他字段直接显示表中的值,所以我很困惑为什么它只是这个字段。
  • @carmelle 。 . .我觉得你不需要问。如果您看到2,那可能就是数据库中的内容。你可以乘以 1000,看看你得到的不是 2000。

标签: sql database ms-access


【解决方案1】:

请试试这个

SELECT  t.Station_ID, CDbl (t3.[Original_Cut_Height(m)]) AS Original_Cut
FROM [Installs] AS t3 LEFT JOIN ON [Inputting Data] AS t on t.Station_ID = t3.Station_ID;

【讨论】:

  • 这不太奏效,我得到的错误是“查询表达式'CAST(t3.[Original_Cut_Height(m)] AS FLOAT)'中的语法错误(缺少运算符)”
  • 抱歉,这是访问 sql 查询,然后我更新了。我认为 CDec() 函数也有效
  • 查询已运行,​​但仍显示向下舍入到最接近整数的值。
  • 您是否使用了 CDec() 函数?另外你有没有以前的 sql 查询来获取数据?这可能是一个 int/int 问题,必须像 int/float 或 float/int 或类似的。
【解决方案2】:

问题出在我的表中。表格中的数字是基于 IIF 语句的,虽然我的表格中的数字显示为小数,但它被作为向下舍入到最接近的整数的整数拉过来。将 CDbl() 放在原始表中 IIF 语句的数字周围解决了这个问题。

【讨论】:

    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多