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

数字操作函数

表1 数字操作函数列表

序号

MySQL数据库

GaussDB数据库

差异

1

ABS()

支持。

-

2

ACOS()

支持。

-

3

ASIN()

支持。

-

4

ATAN()

支持。

-

5

ATAN2()

支持。

-

6

CEILING()

支持,有差异。

部分操作结果类型以及CREATE TABLE AS的精度与MySQL不一致。

  1. 入参为INT类型时,GaussDB返回值类型为BIGINT,MySQL返回值类型为INT。
  2. 入参为BIGINT类型或BIGINT UNSIGNED类型,入参值大于等于20位时(包括符号位),GaussDB返回整型,MySQL5.7返回DECIMAL。该情况下会导致嵌套场景时,CEILING函数作为内层函数存在差异。
    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)。

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

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

    GaussDB表字段返回类型为:INT(5)。

    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)。

7

COS()

支持。

-

8

DEGREES()

支持。

-

9

EXP()

支持。

-

10

FLOOR()

支持,有差异。

部分操作结果类型以及CREATE TABLE AS的精度与MySQL不一致。

  1. 入参为INT类型时,GaussDB返回值类型为BIGINT,MySQL返回值类型为INT。
  2. 入参为BIGINT类型或BIGINT UNSIGNED类型,入参值大于等于20位时(包括符号位),GaussDB返回整型,MySQL5.7返回DECIMAL。该情况下会导致嵌套场景时,floor函数作为内层函数存在差异。
    -- 宽松模式下:
    SET m_format_behavior_compat_options='enable_precision_decimal';
    CREATE TABLE tt AS SELECT floor(-9223372036854775808);
    DESC tt;

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

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

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

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

    GaussDB表字段返回类型为:INT(5)。

    SET m_format_behavior_compat_options='enable_precision_decimal';
    CREATE TABLE t AS SELECT floor(abs(5.5));
    DESC t;

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

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

11

LN()

支持。

-

12

LOG()

支持。

-

13

LOG10()

支持。

-

14

LOG2()

支持。

-

15

PI()

支持。

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

16

POW()

支持。

-

17

POWER()

支持。

-

18

RAND()

支持。

-

19

SIGN()

支持。

-

20

SIN()

支持。

-

21

SQRT()

支持。

-

22

TAN()

支持。

-

23

TRUNCATE()

支持。

-

24

CEIL()

支持。

-

25

CRC32()

支持,有差异。

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

26

CONV()

支持。

-