12.2算术运算符
算术运算符是MySQL中最常用的一类运算符。MySQL支持的算术运算符包括加、减、 乘、除、求余。下面是各种算术运算符的符号、作用、表达式的形式,如表12.1所示。
符号 | 表达式的形式 | 作用 |
---|---|---|
+ | x1+x2+...+xn | 加法运算 |
- | x1-x2-...-xn | 减法运算 |
* | x1*x2*...*xn | 乘法运算 |
/ | x1/x2 | 除法运算,返回x1除以x2的商 |
DIV | x1DIVx2 | 除法运算,返回商,同"/" |
% | x1%x2 | 求余运算,返回X1除以X2的余数 |
MOD | MOD(X1,X2) | 求余运算,返回余数。同"%" |
说明:加号( + )、减号(-)和乘号(*)可以同时运算多个操作数。除号(/)和求余运算符(%)也可以同时计算多个操作数,但是这两个符号计算多个操作数不太好。DIV()和MOD()这两个运算符只有两个参数。除法和求余的运算时,如果参数是0时,计算结果将是空值(NULL )。
【示例12-1】下面将tl表中字段a的值进行加法、减法和乘法运算。计算结果显示如下:
mysql>SELECT a,a+5+2,a-5-2,a*5*2 FROM t1; +-----+---------+---------+---------+ | a | a+5+2 | a-5-2 | a*5*2 | +-----+---------+---------+---------+ | 24 | 31 | 17 | 240 | +-----+---------+---------+---------+ 1 row in set(0.003 sec)
结果显示,a字段的原值为24;加法运算后的值为31;减法运算后的值为17;乘法运算后的值为240。通过这个例子可以看到加号( + )、减号(一).和乘号(*)的使用方法。
【示例12-2】下面将tl表中字段a的值进行除法和求余运算。计算结果显示如下:
mysql>SELECT a,a/3,aDIV/3,a%3 ,MOD(a,3)FROM t1; +-----+---------+---------+---------+--------+ | a | a/3 | aDIV2 | a%3 |MOD(a,3)| +-----+---------+---------+---------+--------+ | 24 | 8.0000 | 8 | 0 | 0 | +-----+---------+---------+---------+--------+ 1 row in set(0.000 sec)
结果显示,除法运算后的值为8;求余运算后的值为0。因为,字段3的值为24,刚好整除3。所以,求余后的余数为0。 进行除法和求余运算时,若操作数X2为0,不管操作数X1的值是什么,计算的结果将为空值(NULL)。
【示例12-3】下面将除法和求余运输的操作数x2设置为0。计算结果显示如下:
mysql>SELECT 5/0,5DIV/0,a%3 ,MOD(5,0)FROM t1; +---------+---------+---------+--------+ | 5/0 | 5DIV0 | 5%0 |MOD(5,0)| +---------+---------+---------+--------+ | NULL | NULL | NULL | NULL | +---------+---------+---------+--------+ 1 row in set(0.000 sec)
结果显示,操作数x2为0时,除法和求余运算的结果为空值(NULL)。
注意:除法运算和求余运算中,x2参数一定不能为0。如果x2参数为0时,除法运算和求余运算的结果都是NULL。而且,X2参数也不能是NULL。如果X2参数为 NULL时,运算结果也会是NULL。因此,在使用除法运算和求余运算时,一定要注意x2参数的值是否合法。