运算符
算术运算符
算术运算符有:加 +
、减 -
、乘 *
、除 /
、取余 %
、整除 DIV
比较运算符
比较运算符适用于比较标量操作数(数字和字符串)。
=
<=>
>
<
>=
<=
<>
!=
不仅可用于比较标量操作数,还可用于比较行操作数。
比较的结果总是 1
、0
或者 null
。
除了 <=>
、IS NULL
和 IS NOT NULL
专门用于与 null
进行比较的运算符外,其他运算符与 null
比较均返回 null
。
=
等于(a, b) = (x, y)
等同于(a = x)AND(b = y)
<=>
安全的等于当两个操作数都为
null
时,返回 1(a, b) <=> (x, y)
等同于(a <=> x)AND(b <=> y)
!=
<>
不等于(a, b) <> (x, y)
或(a, b) != (x, y)
等同于(a <> x)OR(b <> y)
<=
小于等于(a, b) <= (x, y)
等同于(a < x)OR((a = x)AND(b <= y))
<
小于(a, b) < (x, y)
等同于(a < x)OR((a = x)AND(b < y))
>=
大于等于(a, b) >= (x, y)
等同于(a > x)OR((a = x)AND(b >= y))
>
大于(a, b) > (x, y)
等同于(a > x)OR((a = x)AND(b > y))
BETWEEN ... AND ...
在两个临界值之间(包括临界值)NOT BETWEEN ... AND ...
IS {TRUE | FALSE | UNKNOWN}
判断一个值是否为 bool 值IS NOT {TRUE | FALSE | UNKNOWN}
判断一个值是否不为 bool 值IS NULL
判断一个值是否为空IS NOT NULL
判断一个值是否不为空IN
判断操作数是否是 IN 列表(可以是子查询的结果,也可以是一组逗号分割的常值)中的一个值,是则返回 1 否则返回 0NOT IN
与IN
相反LIKE
用通配符匹配字符串,满足匹配条件则返回 1 ,否则返回 0LIKE 在匹配时可以使用通配符
%
(匹配任意个数的字符) 和_
(只能匹配一个字符)NOT LIKE
REGEXP
用正则匹配字符串,满足匹配条件则返回 1 ,否则返回 0NOT REGEXP
逻辑运算符
在 SQL
中,所有逻辑运算符的计算结果都为 1
、0
或 NULL
AND
&
逻辑与mysql> select 1 and 1, 1 and 0,0 and 0, 0 and null, 1 and null, null and null;
+---------+---------+---------+------------+------------+---------------+
| 1 and 1 | 1 and 0 | 0 and 0 | 0 and null | 1 and null | null and null |
+---------+---------+---------+------------+------------+---------------+
| 1 | 0 | 0 | 0 | NULL | NULL |
+---------+---------+---------+------------+------------+---------------+
OR
||
逻辑或mysql> select 1 or 1, 1 or 0,1 or null, 0 or 0, 0 or null, null or null;
+--------+--------+-----------+--------+-----------+--------------+
| 1 or 1 | 1 or 0 | 1 or null | 0 or 0 | 0 or null | null or null |
+--------+--------+-----------+--------+-----------+--------------+
| 1 | 1 | 1 | 0 | NULL | NULL |
+--------+--------+-----------+--------+-----------+--------------+
NOT
!
逻辑非mysql> select !1, !0, !null;
+----+----+-------+
| !1 | !0 | !null |
+----+----+-------+
| 0 | 1 | NULL |
+----+----+-------+
1 row in set (0.00 sec)
XOR
mysql> select 1 xor 0, 1 xor 1, 0 xor 0, 1 xor null, 0 xor null, null xor null;
+---------+---------+---------+------------+------------+---------------+
| 1 xor 0 | 1 xor 1 | 0 xor 0 | 1 xor null | 0 xor null | null xor null |
+---------+---------+---------+------------+------------+---------------+
| 1 | 0 | 0 | NULL | NULL | NULL |
+---------+---------+---------+------------+------------+---------------+
赋值运算符
:=
使左侧的用户变量采用其右侧的值mysql> SELECT @var1, @var2;
+-------+-------+
| @var1 | @var2 |
+-------+-------+
| NULL | NULL |
+-------+-------+
mysql> SELECT @var1 := 1, @var2;
+------------+-------+
| @var1 := 1 | @var2 |
+------------+-------+
| 1 | NULL |
+------------+-------+
mysql> SELECT @var1, @var2;
+-------+-------+
| @var1 | @var2 |
+-------+-------+
| 1 | NULL |
+-------+-------+
mysql> SELECT @var1, @var2 := @var1;
+-------+----------------+
| @var1 | @var2 := @var1 |
+-------+----------------+
| 1 | 1 |
+-------+----------------+
mysql> SELECT @var1, @var2;
+-------+-------+
| @var1 | @var2 |
+-------+-------+
| 1 | 1 |
+-------+-------+
mysql> SELECT @var1:=COUNT(*) FROM blog_account;
+-----------------+
| @var1:=COUNT(*) |
+-----------------+
| 5 |
+-----------------+
mysql> SELECT @var1;
+-------+
| @var1 |
+-------+
| 5 |
+-------+
=
在SET
语句和UPDATE
语句中执行赋值运算
位运算符
位运算符有:按位与 &
、按位或 |
、按位异或 ^
、按位取反 ~
、按位左移 <<
、按位右移 >>
表达式
任何有值的东西都可以叫表达式。
表达式,是由数字、运算符、分组符号(括号)、字段值、用户变量、函数等以能求得数值的有意义排列方法所得的组合。
全文搜索表达式
MATCH (col1,col2,...) AGAINST (expr [search_modifier])
详见 MySQL——全文索引