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取反之后的结果。

posted @ 2013-11-12 11:17  那些年的事儿  阅读(693)  评论(0编辑  收藏  举报