MySQL 5.6学习笔记(运算符)
MySQL运算符包括四类:算术运算符、比较运算符、逻辑运算符和位运算符。
1. 算术运算符
用于种类数值运算。包括:加(+)、减(-)、乘(*)、除(/)、取余(%)。
除法除数为零时,执行结果为null。取余同样如此。
mysql> select 10,10/0,10%0; +----+------+------+ | 10 | 10/0 | 10%0 | +----+------+------+ | 10 | NULL | NULL | +----+------+------+ 1 row in set (0.00 sec)
2. 比较运算符
用于比较运算。包括:大于(>)、小于(<)、等于(=)、大于等于(>=)、小于等于(<=)、不等于(!=)、以及IN、BETWEEN AND、IS NULL、GREATEST、LEAST、LIKE、REGEXP等。
LEAST,在有两个或多个参数时,返回最小值;
GREATEST,在有两个或多个参数时,返回最大值;
mysql> select least(2,0),greatest(10,12,11); +------------+--------------------+ | least(2,0) | greatest(10,12,11) | +------------+--------------------+ | 0 | 12 | +------------+--------------------+ 1 row in set (0.09 sec)
BETWEEN AND,格式为a between min and max;
mysql> select 10 between 20 and 2,10 between 2 and 20; +---------------------+---------------------+ | 10 between 20 and 2 | 10 between 2 and 20 | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+ 1 row in set (0.05 sec)
REGEXP,正则式匹配。
mysql> select 'ssky' regexp '^s','ssky' regexp 'y$', 'ssky' regexp '.sky','ssly' regexp '[ab]'; +--------------------+--------------------+----------------------+----------------------+ | 'ssky' regexp '^s' | 'ssky' regexp 'y$' | 'ssky' regexp '.sky' | 'ssly' regexp '[ab]' | +--------------------+--------------------+----------------------+----------------------+ | 1 | 1 | 1 | 0 | +--------------------+--------------------+----------------------+----------------------+ 1 row in set (0.03 sec)
3. 逻辑运算符
逻辑运算符的求值所得结果均为1(true)或0(false),这类运算行有逻辑非(NOT 或 !)、逻辑与(AND 或 &&)、逻辑或(OR 或 ||)、逻辑异或(XOR)。
not null的返回值为NULL;
mysql> select not 0, not 1, not null; +-------+-------+----------+ | not 0 | not 1 | not null | +-------+-------+----------+ | 1 | 0 | NULL | +-------+-------+----------+ 1 row in set (0.00 sec)
and运算中一个操作数为null,另一操作数非零值,则返回值为NULL;or运算中当有一个操作数为null,另一个操作数非零值,则返回1,否则返回0,当两个数都为null时,返回NULL;
mysql> select 1 or 0, 1 or 2, null or 0,null or 2, null || null; +--------+--------+-----------+-----------+--------------+ | 1 or 0 | 1 or 2 | null or 0 | null or 2 | null || null | +--------+--------+-----------+-----------+--------------+ | 1 | 1 | NULL | 1 | NULL | +--------+--------+-----------+-----------+--------------+ 1 row in set (0.00 sec)
xor运算中任一个操作数为null则返回值为NULL。
4. 位操作运算符
参与运算的操作数,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)等6种。
mysql> select 1<<2,4<<2,1>>1,16>>2,bin(~4); +------+------+------+-------+------------------------------------------------------------------+ | 1<<2 | 4<<2 | 1>>1 | 16>>2 | bin(~4) | +------+------+------+-------+------------------------------------------------------------------+ | 4 | 16 | 0 | 4 | 1111111111111111111111111111111111111111111111111111111111111011 | +------+------+------+-------+------------------------------------------------------------------+ 1 row in set (0.00 sec)
上面使用了bin()函数查看4取反之后的结果。