1 常见运算符
1.1 算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(%)。
mysql> SELECT 9+4,9-4,9*4,9/4,9%4;
+-----+-----+-----+------+-----+
| 9+4 | 9-4 | 9*4 | 9/4 | 9%4 |
+-----+-----+-----+------+-----+
| 13 | 5 | 36 | 2.25 | 1 |
+-----+-----+-----+------+-----+
1 row in set
1.2 比较运算符
一个比较运算符的结果总是1、0或者NULL,比较运算符经常在SELECT的查询条件子句中使用,用来查询满足制定条件的记录。
运算符 | 作用 |
---|---|
= | 等于 |
<=> | 安全的等于 |
<>(!=) | 不等于 |
<= | 小于等于 |
>= | 大于等于 |
> | 大于 |
IS [NOT] NULL | 判断一个值是否(不)为NULL |
[NOT] IN | 判断一个值(不)是IN列表中的任意一个值 |
BETWEEN AND | 判断一个值是否落在两个值之间 |
LIKE | 通配符匹配 |
REGEXP | 正则表达式匹配 |
LEAST | 两个或多个参数时,返回最小值 |
GREATEST | 两个或多个参数时,返回最大值 |
1.2.1 =和<=>
两者的作用相同,唯一区别是<=>可以用来对NULL进行判断,两者都为NULL时返回值为1。
mysql> SELECT 5=5,5<=>9,NULL=NULL,NULL<=>NULL;
+-----+-------+-----------+-------------+
| 5=5 | 5<=>9 | NULL=NULL | NULL<=>NULL |
+-----+-------+-----------+-------------+
| 1 | 0 | NULL | 1 |
+-----+-------+-----------+-------------+
1 row in set
1.2.2 BETWEEN AND运算符
mysql> SELECT 5 BETWEEN 3 AND 9,5 BETWEEN 6 AND 9;
+-------------------+-------------------+
| 5 BETWEEN 3 AND 9 | 5 BETWEEN 6 AND 9 |
+-------------------+-------------------+
| 1 | 0 |
+-------------------+-------------------+
1 row in set
1.2.3 IN、NOT IN运算符
mysql> SELECT 5 IN(1,3,5,'jtzen9') as col1,
-> 'jtzen9' NOT IN (1,3,5,'jtzen9') as col2;
+------+------+
| col1 | col2 |
+------+------+
| 1 | 0 |
+------+------+
1 row in set
1.2.4 LEAST、GREATEST
(1)LEAST(值1,值2,……,值n),返回最小值
(2)GREATEST(值1,值2,……,值n),返回最大值;任一变量为NULL,返回NULL。
mysql> SELECT LEAST(20.0,5,9) as col1,
-> LEAST(10,NULL) as col2,
-> GREATEST(20.0,5,9) as col3,
-> GREATEST(20.0,NULL) as col4;
+------+------+------+------+
| col1 | col2 | col3 | col4 |
+------+------+------+------+
| 5 | NULL | 20 | NULL |
+------+------+------+------+
1 row in set
1.2.5 LIKE通配符匹配
LIKE运算符在进行匹配时,可以使用下面两种通配符:
(1)‘ % ’,匹配任何数目的字符,甚至包括零字符。
(2)‘ _ ’,只匹配一个字符。
mysql> SELECT 'jtzen9' LIKE 'jtzen9' as col1,
-> 'jtzen9' LIKE 'jtzen_' as col2,
-> 'jtzen9' LIKE 'j%n9' as col3,
-> 'jtzen9' LIKE 'jt____' as col4,
-> 'jtzen9' LIKE NULL as col5;
+------+------+------+------+------+
| col1 | col2 | col3 | col4 | col5 |
+------+------+------+------+------+
| 1 | 1 | 1 | 1 | NULL |
+------+------+------+------+------+
1 row in set
1.2.6 REGEXP正则表达式匹配
REGEXP运算符在进行匹配时,常用的几种通配符:
(1)‘ ^ ’匹配以该字符后面的字符开头的字符串;
(2)‘ $ ’匹配以该字符后面的字符结尾的字符串;
(3)‘ . ’匹配任何一个单字节;
(4)“[…]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个‘ - ’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字;
(5)‘ * ’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]”匹配任何数量的数字,而“.”匹配任何数量的任何字符。
mysql> SELECT 'ssky' REGEXP '^s' as col1,
-> 'ssky' REGEXP 'y$' as col2,
-> 'ssky' REGEXP '.sky' as col3,
-> 'ssky' REGEXP '[ab]' as col4;
+------+------+------+------+
| col1 | col2 | col3 | col4 |
+------+------+------+------+
| 1 | 1 | 1 | 0 |
+------+------+------+------+
1 row in set
1.3 逻辑运算符
在SQL中,所有逻辑运算符的求值所得结果均为TRUE、FALSE或NULL。在MySQL中,为1、0和NULL。
运算符 | 作用 |
---|---|
NOT 或者 ! | 逻辑非 |
AND 或者 && | 逻辑与 |
OR 或者 || | 逻辑或 |
XOR | 逻辑异或 |
注意:AND两边一定要使用空格隔开,不然会影响结果的正确性。
1.4 位运算符
位运算符是用来对二进制字节中的位进行测试、移位或者测试处理。
运算符 | 作用 |
---|---|
| | 位或 |
& | 位与 |
^ | 位异或 |
<< | 位左移 |
>> | 位右移 |
~ | 位取反,反转所有比特 |
1.5 运算符的优先级
在无法确定优先级的情况下,可以使用圆括号()来改变优先级,并且这样会使计算过程更加清晰。