【问题标题】:Numeric overflow in a query查询中的数字溢出
【发布时间】:2014-08-19 07:27:03
【问题描述】:

作为 SQL 查询的一部分,我有以下内容

iif(rapport_nc, 35, 0) AS rapport

如果第一条记录返回 0(就是这种情况),每条返回 35 的记录都会出现数字溢出错误。

如何在不“按摩”数据的情况下解决这个问题?

【问题讨论】:

    标签: foxpro visual-foxpro


    【解决方案1】:

    使用 CAST() 包装具有可变返回长度的表达式是一种很好的做法。例如:

    CAST(IIF(rapport_nc, 35, 0) AS I)
    

    【讨论】:

      【解决方案2】:

      Bernard(以及其他 VFP 新手)。 VFP 查询实际上运行了两次查询,一次是针对第一条记录,以确认最终的列类型和大小,然后针对所有记录的实际查询。因此,作为您的 IIF(),如果表的第一条记录是 0 的结果,那么它将最终列大小设置为 1 位,因此失败。因此,您的 IIF(condition, 35, 00) 解决方案现在将两个可能的答案都识别为 2 位数字。如果您修剪字符串,例如修剪名称、地址或类似内容,并且通常使用 PADR(somefield, finalLengthWanted) 解析,也会发生这种情况。

      【讨论】:

        【解决方案3】:

        我曾想过尝试“IIF(rapport_nc,35,00) AS rapport”,它奏效了。抱歉,添麻烦了。 /b

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-06-15
          • 1970-01-01
          • 2014-11-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多