更新时间:2024-11-11 GMT+08:00

比较函数

表1 比较函数列表

序号

MySQL数据库

GaussDB数据库

差异

1

COALESCE()

支持,有差异。

union distinct场景下,返回值精度与MySQL不完全一致。

当第一个不为NULL的参数的后续参数表达式中存在隐式类型转换错误时,MySQL会忽略该错误,GaussDB会提示类型转换错误。当参数为MIN函数、MAX函数时,返回值类型与MySQL不一致。

2

INTERVAL()

支持。

-

3

GREATEST()

支持,有差异。

当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为LONGBLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。

当该函数入参含有NULL且在WHERE关键字之后调用,返回结果与MySQL5.7不一致,此处为MySQL5.7存在的问题,MySQL8.0修复了该问题,目前GaussDB和MySQL8.0保持一致。

4

LEAST()

支持,有差异。

当MySQL返回值类型为二进制字符串类型(BINARY、VARBINARY、BLOB等)时,GaussDB对应的返回值类型为LONGBLOB;当MySQL返回值类型为非二进制字符串类型(CHAR、VARCHAR、TEXT等)时,GaussDB对应的返回值类型为TEXT。

当该函数入参含有NULL且在WHERE关键字之后调用,返回结果与MySQL5.7不一致,此处为MySQL5.7存在的问题,MySQL8.0修复了该问题,目前GaussDB和MySQL8.0保持一致。

5

ISNULL()

支持,有差异。

  • 函数返回值类型在MySQL5.7和MySQL8.0中存在差异,结合MySQL8.0的行为更为合理,因此函数返回值类型兼容MySQL8.0。
  • 内层嵌套部分聚合函数时,部分场景返回结果MySQL5.7和MySQL8.0中存在差异,结合MySQL8.0的行为更为合理,因此函数返回值兼容MySQL8.0。
    m_db=# SELECT isnull(avg(1.23));
    ?column?
    ----------
    f
    (1 row)
    
    m_db=# SELECT isnull(group_concat(1.23));
    ?column?
    ----------
    f
    (1 row)
    
    m_db=# SELECT isnull(max('1.23'));
    ?column?
    ----------
    f
    (1 row)
    
    m_db=# SELECT isnull(min(1/2));
    ?column?
    ----------
    f
    (1 row)
    
    m_db=# SELECT isnull(std(3.14159 * 1.2345));
    ?column?
    ----------
    f
    (1 row)
    
    m_db=# SELECT isnull(sum('0.23400'));
    ?column?
    ----------
    f
    (1 row)