更新时间:2025-06-30 GMT+08:00

数字操作函数

表1 数字操作函数列表

函数名

与MySQL的差异

ABS()

-

ACOS()

-

ASIN()

-

ATAN()

-

ATAN2()

-

CEILING()

部分场景下函数的返回类型与MySQL不一致,进而导致CREATE TABLE AS生成的表字段与MySQL不一致。

  • 入参为BIGINT类型或BIGINT UNSIGNED类型,入参值大于等于20位时(包括符号位),GaussDB返回整型,MySQL 5.7返回DECIMAL。例如:
    SET m_format_behavior_compat_options='enable_precision_decimal';
    CREATE TABLE tt AS SELECT ceiling(-9223372036854775808);
    DESC tt;

    MySQL表字段返回类型为:DECIMAL(16,0)。

    GaussDB表字段返回类型为:BIGINT(17)。

  • 入参为NUMERIC类型时,返回类型可能与MySQL不一致。 当参数为常量、表字段时返回类型和MySQL 5.7保持一致。对于其他类型的入参如嵌套情况,结果会有差异,GaussDB返回NUMERIC类型,MySQL可能返回整型。例如:
    SET m_format_behavior_compat_options='enable_precision_decimal';
    CREATE TABLE t AS SELECT ceiling(abs(5.5));
    DESC t;

    MySQL表字段返回类型为:INT(4)。

    GaussDB表字段返回类型为:DECIMAL(3,0)。

CEIL()

FLOOR()

COS()

-

DEGREES()

-

EXP()

-

LN()

-

LOG()

-

LOG10()

-

LOG2()

-

PI()

精度传递开关关闭的情况下,也即m_format_behavior_compat_options中的enable_precision_decimal未设置时,PI函数的返回值精度与MySQL的有差异:MySQL中PI函数的结果仅保留四舍五入之后的小数后6位,而GaussDB的结果会保留四舍五入之后的小数后15位。

POW()

-

POWER()

-

RAND()

-

SIGN()

-

SIN()

-

SQRT()

-

TAN()

-

TRUNCATE()

-

CRC32()

当BINARY类型插入字符串长度小于目标长度时,GaussDB填充符和MySQL不同;因此入参为BINARY类型时,函数结果和MySQL不一致。

CONV()

-

COT()

-

RADIANS()

-