运算符 | 作用 |
---|---|
= | 等于 |
<=> | 安全等于 |
<>、!= | 不等于 |
<= | 小于或等于 |
>= | 大于或等于 |
> | 大于 |
IS NULL | 判断一个值是否为 NULL |
IS NOT NULL | 判断一个值是否不为 NULL |
LEAST | 在有两个或多个参数时,返回最小值 |
GREATEST | 当有两个或多个参数时,返回最大值 |
BETWEEN AND | 判断一个值是否落在两个值之间 |
ISNULL | 与 IS NULL 作用相同 |
IN | 判断一个值是 IN 列表中的任意一个值 |
NOT IN | 判断一个值不是 IN 列表中的任意一个值 |
LIKE | 通配符匹配 |
REGEXP | 正则表达式匹配 |
mysql> SELECT 1=0, '2'=2, 2=2,'0.02'=0, 'b'='b', (1+3) = (2+2),NULL=NULL; +-----+-----+-----+----------+---------+-----------------+-------------+ | 1=0 |'2'=2| 2=2 | '0.02'=0 | 'b'='b' | (1+3) = (2+2) | NULL=NULL | +-----+-----+-----+----------+---------+-----------------+-------------+ | 0 | 1 | 1 | 0 | 1 | 1 | NULL | +-----+-----+-----+----------+---------+-----------------+-------------+由结果可以看到,在进行判断时,2=2 和 '2'=2 的返回值相同,都为 1。因为在进行判断时,MySQL 自动进行了转换,把字符 '2' 转换成了数字 2;'b'='b' 为相同的字符比较,所以返回值为 1;表达式 1+3 和表达式 2+2 的结果都为 4,因此结果相等,返回值为 1;由于“=”不能用于空值 NULL 的判断,所以返回值为 NULL。
mysql> SELECT 1<=>0, '2'<=>2, 2<=>2,'0.02'<=>0, 'b'<=>'b', (1+3)<=> (2+1),NULL<=>NULL; +-----+-------+-----+----------+---------+---------------+------------+ |1<=>0|'2'<=>2|2<=>2|'0.02'<=>0|'b'<=>'b'|(1+3) <=> (2+1)| NULL<=>NULL| +-----+-------+-----+----------+---------+---------------+------------+ | 0 | 1| 1 | 0 | 1 | 0 | 1 | +-----+-------+-----+----------+---------+---------------+------------+由结果可以看到,“<=>”在执行比较操作时和“=”的作用相似,唯一的区别是“<=>”可以用来对 NULL 进行判断,两者都为 NULL 时返回值为 1。
mysql> SELECT 'good'<>'god', 1<>2, 4!=4, 5.5!=5, (1+3)!=(2+1),NULL<>NULL; +---------------+------+------+--------+--------------+------------+ | 'good'<>'god' | 1<>2 | 4!=4 | 5.5!=5 | (1+3)!=(2+1) | NULL<>NULL | +---------------+------+------+--------+--------------+------------+ | 1 | 1 | 0 | 1 | 1 | NULL | +---------------+------+------+--------+--------------+------------+由结果可以看到,上面两个不等于运算符的作用相同,都可以进行数字、字符串、表达式的比较判断。
mysql>SELECT 'good'<='god', 1<=2, 4<=4, 5.5<=5, (1+3)<=(2+1),NULL<=NULL; +---------------+------+------+--------+----------------+------------+ | 'good'<='god' | 1<=2 | 4<=4 | 5.5<=5 | (1+3) <= (2+1) | NULL<=NULL | +---------------+------+------+--------+----------------+------------+ | 0 | 1 | 1 | 0 | 0 | NULL | +---------------+------+------+--------+----------------+------------+由结果可以看到,左边操作数小于或等于右边时,返回值为 1,例如 4<=4;当左边操作数大于右边时,返回值为 0,例如 'good'<='god'('good' 第 3 个位置的“o”字符在字母表中的顺序大于'god' 中第 3 个位置的“d”字符,因此返回值为 0);比较两个 NULL 值时将返回 NULL。
mysql> SELECT 'good'<'god', 1<2, 4<4, 5.5<5, (1+3) < (2+1),NULL<NULL; +--------------+-----+-----+-------+---------------+-----------+ | 'good'<'god' | 1<2 | 4<4 | 5.5<5 | (1+3) < (2+1) | NULL<NULL | +--------------+-----+-----+-------+---------------+-----------+ | 0 | 1 | 0 | 0 | 0 | NULL | +--------------+-----+-----+-------+---------------+-----------+由结果可以看到,当左边操作数小于右边时,返回值为 1,例如 1<2;当左边操作数大于右边时,返回值为0,例如 'good'<'god'('good' 第 3 个位置的“o”字符在字母表中的顺序大于 'god' 中第 3 个位置的“d”字符,因此返回值为 0);比较两个 NULL 值时将返回 NULL。
MySQL> SELECT 'good'>='god', 1>=2, 4>=4, 5.5>=5, (1+3) >= (2+1),NULL>=NULL; +---------------+------+------+--------+----------------+------------+ | 'good'>='god' | 1>=2 | 4>=4 | 5.5>=5 | (1+3) >= (2+1) | NULL>=NULL | +---------------+------+------+--------+----------------+------------+ | 1 | 0 | 1 | 1 | 1 | NULL | +---------------+------+------+--------+----------------+------------+由结果可以看到,左边操作数大于或等于右边时,返回值为 1,例如 4>=4;当左边操作数小于右边时,返回值为 0,例如 1>=2;比较两个 NULL 值时将返回 NULL。
mysql> SELECT 'good'>'god', 1>2, 4>4, 5.5>5, (1+3) > (2+1),NULL>NULL; +--------------+-----+-----+-------+---------------+-----------+ | 'good'>'god' | 1>2 | 4>4 | 5.5>5 | (1+3) > (2+1) | NULL>NULL | +--------------+-----+-----+-------+---------------+-----------+ | 1 | 0 | 0 | 1 | 1 | NULL | +--------------+-----+-----+-------+---------------+-----------+由结果可以看到,左边操作数大于右边时,返回值为 1,例如 5.5>5;左边操作数小于右边时,返回 0,例如 1>2;比较两个 NULL 值时将返回 NULL。
mysql> SELECT NULL IS NULL, ISNULL(NULL),ISNULL(10), 10 IS NOT NULL; +--------------+--------------+------------+----------------+ | NULL IS NULL | ISNULL(NULL) | ISNULL(10) | 10 IS NOT NULL | +--------------+--------------+------------+----------------+ | 1 | 1 | 0 | 1 | +--------------+--------------+------------+----------------+由结果可以看到,IS NULL 和 ISNULL 的作用相同,只是格式不同。ISNULL 和 IS NOT NULL 的返回值正好相反。
expr BETWEEN min AND max假如 expr 大于等于 min 且小于等于 max,则 BETWEEN 的返回值为 1,否则返回值为 0。
mysql> SELECT 4 BETWEEN 2 AND 5, 4 BETWEEN 4 AND 6,12 BETWEEN 9 AND 10; +-------------------+-------------------+---------------------+ | 4 BETWEEN 2 AND 5 | 4 BETWEEN 4 AND 6 | 12 BETWEEN 9 AND 10 | +-------------------+-------------------+---------------------+ | 1 | 1 | 0 | +-------------------+-------------------+---------------------+ mysql> SELECT 'x' BETWEEN 'f' AND 'g', 'b' BETWEEN 'a' AND 'c'; +-------------------------+-------------------------+ | 'x' BETWEEN 'f' AND 'g' | 'b' BETWEEN 'a' AND 'c' | +-------------------------+-------------------------+ | 0 | 1 | +-------------------------+-------------------------+由结果可以看到,4 在端点值区间内或者等于其中一个端点值时,BETWEEN…AND… 表达式返回值为 1;12 并不在指定区间内,因此返回值为 0;对于字符串类型的比较,按字母表中字母顺序进行比较,“x”不在指定的字母区间内,因此返回值为 0,而“b”位于指定字母区间内,因此返回值为 1。
LEAST(值1,值2,...,值n)其中,“值n”表示参数列表中有 n 个值。在有两个或多个参数的情况下,返回最小值。假如任意一个自变量为 NULL,则 LEAST() 的返回值为 NULL。
mysql> SELECT least(2,0), least(20.0,3.0,100.5), least('a','c','b'),least(10,NULL); +----------+---------------------+------------------+--------------+ |least(2,0)|least(20.0,3.0,100.5)|least('a','c','b')|least(10,NULL)| +----------+---------------------+------------------+--------------+ | 0 | 3.0 | a | NULL | +----------+---------------------+------------------+--------------+由结果可以看到,当参数是整数或者浮点数时,LEAST 将返回其中最小的值;当参数为字符串时,返回字母表中顺序最靠前的字符;当比较值列表中有 NULL 时,不能判断大小,返回值为 NULL。
GREATEST(值1, 值2,...,值n)其中,n 表示参数列表中有 n 个值。当有两个或多个参数时,返回值为最大值。假如任意一个自变量为 NULL,则 GREATEST() 的返回值为 NULL。
mysql> SELECT greatest(2,0), greatest(20.0,3.0,100.5), greatest('a','c','b'), greatest(10,NULL); +-------------+------------------------+---------------------+------------------+ |greatest(2,0)|greatest(20.0,3.0,100.5)|greatest('a','c','b')|greatest(10,NULL) | +-------------+------------------------+---------------------+------------------+ | 2 | 100.5 | c | NULL | +-------------+------------------------+---------------------+------------------+由结果可以看到,当参数中是整数或者浮点数时,GREATEST 将返回其中最大的值;当参数为字符串时,返回字母表中顺序最靠后的字符;当比较值列表中有 NULL 时,不能判断大小,返回值为 NULL。
mysql> SELECT 2 IN (1,3,5,'thks'), 'thks' IN (1,3,5,'thks'); +---------------------+--------------------------+ | 2 IN (1,3,5,'thks') | 'thks' IN (1,3,5,'thks') | +---------------------+--------------------------+ | 0 | 1 | +---------------------+--------------------------+ mysql> SELECT 2 NOT IN (1,3,5,'thks'), 'thks' NOT IN (1,3,5,'thks'); +-------------------------+------------------------------+ | 2 NOT IN (1,3,5,'thks') | 'thks' NOT IN (1,3,5,'thks') | +-------------------------+------------------------------+ | 1 | 0 | +-------------------------+------------------------------+由结果可以看到,IN 和 NOT IN 的返回值正好相反。
mysql> SELECT NULL IN (1,3,5,'thks'),10 IN (1,3,NULL,'thks'); +------------------------+-------------------------+ | NULL IN (1,3,5,'thks') | 10 IN (1,3,NULL,'thks') | +------------------------+-------------------------+ | NULL | NULL | +------------------------+-------------------------+IN() 语法也可用于在 SELECT 语句中进行嵌套子查询,在后面的章节中将会讲到。
expr LIKE 匹配条件如果 expr 满足匹配条件,则返回值为 1(True);如果不匹配,则返回值为 0(False)。expr 或匹配条件中任何一个为 NULL,则结果为 NULL。
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 | 1 | 1 | 0 | NULL | +------------------+------------------+---------------+--------------------+--------------+由结果可以看到,指定匹配字符串为“stud”。“stud”表示直接匹配“stud”字符串,满足匹配条件,返回 1;“stu_”表示匹配以 stu 开头的长度为 4 个字符的字符串,“stud”正好是 4 个字符,满足匹配条件,因此匹配成功,返回 1;“%d”表示匹配以字母“d”结尾的字符串,“stud”满足匹配条件,匹配成功,返回 1;“t _ _ _”表示匹配以“t”开头的长度为 4 个字符的字符串,“stud”不满足匹配条件,因此返回 0;当字符“s”与 NULL 匹配时,结果为 NULL。
expr REGEXP 匹配条件如果 expr 满足匹配条件,则返回 1;如果不满足,则返回 0。若 expr 或匹配条件任意一个为 NULL,则结果为 NULL。
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 | +------------------+------------------+--------------------+--------------------+由结果可以看到,指定匹配字符串为“ssky”:
本文链接:http://task.lmcjl.com/news/14857.html