【问题标题】:Advantage 8.1 vs 7.1优势 8.1 与 7.1
【发布时间】:2009-06-16 16:42:07
【问题描述】:

我正在将一些内部应用程序从 ADS 7.1 升级到 8.1。

不久前有人告诉我,AVG() 函数的返回值以及一些除法计算发生了变化,但我找不到关于这些变化的任何文档。

有谁知道我在说什么或者有一个解释细节的链接?

【问题讨论】:

    标签: advantage-database-server server-administration


    【解决方案1】:

    帮助文件中的“升级到版本 8.1 的影响”主题有一小段关于更改的内容,但没有详细说明。

    基本上,从 8.1 版开始,Advantage 现在在整数除法方面遵循 SQL 标准。整数除法表达式的小数部分被截断,过去它们会导致浮点结果。

    要解决此更改,如果您仍希望某些表达式产生浮点数据类型,则可能必须强制转换它们。例如:

    这个:

    select int1 / int2 from mytable;
    

    需要改为:

    select cast( int1 as sql_float ) / int2 from mytable;
    

    【讨论】:

    • 谢谢杰里米。信息量很大。这是否也会影响 avg 函数的结果?还有其他受这种“新数学”影响的函数吗?
    • avg 的行为与 v8.1 中的行为相同。在 8.1 中,它返回与调用它的表达式相同的数据类型。例如,如果你 avg(intField) 你会得到一个整数。如果你 avg( double_field ) 你会得到一个双倍,等等。这种行为是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2016-07-18
    • 2012-07-09
    相关资源
    最近更新 更多