全部产品
阿里云办公

算术运算符

更新时间:2017-06-07 13:26:11

OceanBase中,数值计算只允许在数值类型和VARCHAR直接进行,其它类型直接报错。字符串在做算术运算时,如果无法转成DOUBLE类型则报错,比如“'3.4he' + 3”。字符串只有在内容全为数字或者开头是“+”或者“-”,且后面跟数字的形式才能转成DOUBLE型。

OceanBase支持的运算符如下表所示。

表达式 含义 举例
+ 加法。 SELECT 2+3;
- 减法。 SELECT 2-3;
* 乘法。 SELECT 2*3;
/ 除法,返回商。如果除数为“0”,则返回结果为“NULL”。 SELECT 2/3;
%或MOD 除法,返回余数。如果除数为“0”,则返回结果为“NULL” SELECT 2%3, 2 MOD 3;
^ 返回指定数值的指定幂运算结果。 SELECT 2^2

“+”、“-”、“*”的操作类型对照如下表所示:

INT FLOAT DOUBLE TIMESTAMP VARCHAR BOOL
INT INT DOUBLE DOUBLE Error DOUBLE/Error Error
FLOAT DOUBLE DOUBLE Error DOUBLE/Error Error
DOUBLE DOUBLE Error DOUBLE/Error Error
TIMESTAMP Error Error Error
VARCHAR DOUBLE/Error Error
BOOL Error

“/”的操作类型对照如下表,如果除数为零则报错。

INT FLOAT DOUBLE TIMESTAMP VARCHAR BOOL NULL
INT DOUBLE/Error DOUBLE/Error DOUBLE/Error Error DOUBLE/Error Error NULL/Error
FLOAT DOUBLE/Error DOUBLE/Error Error DOUBLE/Error Error NULL/Error
DOUBLE DOUBLE/Error Error DOUBLE/Error Error NULL/Error
TIMESTAMP Error Error Error Error
VARCHAR DOUBLE/Error Error NULL/Error
BOOL Error Error
NULL NULL

“%”和“MOD”的操作类型对照如下表。

INT FLOAT DOUBLE TIMESTAMP VARCHAR BOOL NULL
INT INT DOUBLE DOUBLE Error DOUBLE/Error Error NULL
FLOAT DOUBLE DOUBLE Error DOUBLE/Error Error NULL
DOUBLE DOUBLE Error DOUBLE/Error Error NULL
TIMESTAMP Error Error Error Error
VARCHAR DOUBLE/Error Error NULL/Error
BOOL Error Error
NULL NULL