比较运算符
除了一般的的比较运算符,还包括IN,IS NULL,BETWEEN AND,GREATEST,LEAST,LIKE,REGEXP
.
逻辑运算符
NOT ! 非
AND && 与
OR || 或
XOR 异或
位操作运算符
& 与
| 或
~ 位非
^ 位异或
>> 右移
<< 左移
运算符
在执行运算时,除法0不能作为除数,所以当除以0的时候,返回的结果为空。
比较运算符
<==> 为安全等于
<> 为不等于
LEAST 多个参数时,返回最小值
GREATEST 多个参数时,返回最大值
BETWEEN 判断一个值是否在两个值之间
LIKE 通配符匹配
REGEXP 正则表达式
=运算比较时,有一个或者两个为NULL的时候,结果为NULL
在字符串与数字比较的时候,字符串转为数字
<==> 可以来判断NULL,当两个都是NULL的时候,结果为1,有一个为NULL则为0
<,<=,>,>=等运算符都不能判断空值。
BETWEEN AND
expr BETWEEN min AND max
如果expr大于min小于max则返回1
LEAST
LEAST(值1,值2......值n)
返回最小的数,字母则按照字母的字母表顺序,NULL直接返回NULL
GREATEST
与LEAST 相反,返回最大值
LIKE
expr LIKE 匹配条件
expr满足匹配条件,则返回1
% 匹配任意数目的字符,甚至包括零字符。
_ 只能匹配一个字符。
例如:
mysql> select 'stud' LIKE 'stud','stud' like 'stu','stud' like '%d','stud' like 't_ _ _','s' like NULL;
+--------------------+-------------------+------------------+----------------------+---------------+
| 'stud' LIKE 'stud' | 'stud' like 'stu' | 'stud' like '%d' | 'stud' like 't_ _ _' | 's' like NULL |
+--------------------+-------------------+------------------+----------------------+---------------+
| 1 | 0 | 1 | 0 | NULL |
+--------------------+-------------------+------------------+----------------------+---------------+
1 row in set (0.46 sec)
stud与stud相等,返回1,stud包含stu,全部匹配,返回1,stud的结尾为d,返回1,而stud开头不是t,匹配失败,返回0,NULL 存在,返回NULL.
REGEXP
expr REGEXP 匹配条件
^ 匹配该字符后的字符
$ 匹配该字符前面的字符
. 匹配任何一个单字符
[…] 匹配括号内的字符
* 匹配一个或者多个*前面的字符
mysql> select 'ssky' REGEXP '^s','ssky' regexp 'y$','ssky' regexp '.sky','ssky' regexp '[ab]';
+--------------------+--------------------+----------------------+----------------------+
| 'ssky' REGEXP '^s' | 'ssky' regexp 'y$' | 'ssky' regexp '.sky' | 'ssky' regexp '[ab]' |
+--------------------+--------------------+----------------------+----------------------+
| 1 | 1 | 1 | 0 |
+--------------------+--------------------+----------------------+----------------------+
.sky匹配任意‘sky’结尾,返回1,a和b都不在’ssky‘中,所以返回0
OR || 运算
非0与NULL进行or运算,结果为1,否则为0,NULL OR NULL 为NULL
异或 xor
相同为0,不同为1
优先级由低到高
优先级 | 运算符 |
---|---|
1 | =(赋值运算),:= |
2 | ||,OR |
3 | XOR |
4 | &&,AND |
5 | NOT |
6 | BETWEEN,CASE,WHILE,THEN,ELSE |
7 | =(比较运算),<=>,>=,<=,<,<>,!=,IS,LIKE,REGEXP,IN |
8 | | |
9 | & |
10 | <<,>> |
11 | -,+ |
12 | *,/,% |
13 | ^ |
14 | -(负号),~(按位取反) |
15 | ! |
注:在mysql中字母比较是不区分大小写的,但是想要执行大小写比较,可以通过在关键字前加BINARY
mysql> SELECT 'a'='A';
+---------+
| 'a'='A' |
+---------+
| 1 |
+---------+
mysql> SELECT BINARY'a'='A';
+---------------+
| BINARY'a'='A' |
+---------------+
| 0 |
+---------------+