【MySQL】比较运算符(二)

140 阅读5分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情

目录

0F435FC7.jpg 今天阿文介绍的内容:

  • 7种比较运算符

1.IS NULL(ISNULL)和IS NOT NULL运算符

IS NULLISNULL检验一个值是否为NULL:如果为NULL,返回值为1;否则返回值为0IS NOT NULL检验一个值是否为非NULL:如果是非NULL,返回值为1;否则返回值为0。IS NULL和ISNULL的作用相同,只是格式不同。ISNULL和IS NOT NULL的返回值正好相反

IS NULL格式:

NULL IS NULL;

ISNULL格式:

ISNULL(NULL);

例子:

SELECT NULL IS NULL, ISNULL(NULL), NULL IS NOT NULL;

输出结果为:

image.png

2.BETWEEN AND运算符

语法格式为:

expr BETWEEN min AND max

假如expr大于等于min且小于等于max,则BETWEEN的返回值为1,否则返回值为0。4在端点值区间[2,5]内或者等于其中一个端点值时,BETWEEN AND表达式返回值为1;12并不在指定区间[9,10]内,因此返回值为0;对于字符串类型的比较,按字母表中字母顺序进行比较,‘x’不在指定的字母区间[‘f’,‘g’]内,因此返回值为0,而‘b’位于指定字母区间内[‘a’,‘c’],因此返回值为1。

例子:

SELECT 4 BETWEEN 1 AND 6, "C" BETWEEN "A" AND "Z", 100 BETWEEN 'a' and 'z', 100 BETWEEN "1" AND "200";

输出结果为:

image.png 可以看到数字是可以判断是否在字符范围内的,但字符不可以判断是否在数字范围内,如果判断则MySQL会报错

3.LEAST运算符

LEAST关键字是用来判断最小值的运算符。

语法格式为:

LEAST(值1,值2,...,值n)

其中,“值n”表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。假如任意一个自变量为NULL,则LEAST()的返回值为NULL。

当参数是整数或者浮点数时,LEAST将返回其中最小的值;当参数为字符串时,返回字母表中顺序最靠前的字符;当比较值列表中有NULL时,不能判断大小,返回值为NULL。

例子:

SELECT LEAST(10,9,8,1), LEAST("AB","AC","ab","zz"), LEAST(NULL,1,2,3);

输出结果为:

image.png

4.GREATEST (value1,value2,...)

GREATEST关键字是用来判断最大值的运算符。

语法格式为:

GREATEST(值1,值2,...,值n)

其中,n表示参数列表中有n个值。当有两个或多个参数时,返回值为最大值。假如任意一个自变量为NULL,则GREATEST()的返回值为NULL。

当参数中是整数或者浮点数时,GREATEST将返回其中最大的值;当参数为字符串时,返回字母表中顺序最靠后的字符;当比较值列表中有NULL时,不能判断大小,返回值为NULL。

例子:

SELECT GREATEST(10,9,8), GREATEST("AB","AD","az"), GREATEST(NULL,1,3,5);

输出结果为:

image.png

1.5IN、NOT IN运算符

IN运算符用来判断操作数是否为IN列表中的其中一个值:如果是,返回值为1;否则返回值为0

NOT IN运算符用来判断表达式是否为IN列表中的其中一个值:如果不是,返回值为1;否则返回值为0

在左侧表达式为NULL的情况下,或是表中找不到匹配项并且表中一个表达式为NULL的情况下,IN的返回值均为NULL。

IN()语法也可用于在SELECT语句中进行嵌套子查询。

例子:

SELECT 5 IN(5,6,7), 6 IN(NULL,9,10), NULL IN(9,10,11), 6 NOT IN(10,11,12);

输出结果为:

image.png

6.LIKE

LIKE运算符用来匹配字符串,如果expr满足匹配条件,则返回值为1(TRUE);如果不匹配,则返回值为0(FALSE)。expr或匹配条件中任何一个为NULL,则结果为NULL。LIKE运算符在进行匹配时,可以使用下面的两种通配符:

(1)‘%’,匹配任何数目的字符,甚至包括零字符。

(2)‘_’,只能匹配一个字符。

若指定匹配字符串为“stud”。“stud”表示直接匹配“stud”字符串,满足匹配条件,返回1;“stu_”表示匹配以stu开头的长度为4个字符的字符串,“stud”正好是4个字符,满足匹配条件,因此匹配成功,返回1;“%d”表示匹配以字母“d”结尾的字符串,“stud”满足匹配条件,匹配成功,返回1;“t _ _ _”表示匹配以‘t’开头的长度为4个字符的字符串,“stud”不满足匹配条件,因此返回0;当字符‘s’与NULL匹配时,结果为NULL。

语法格式为:

expr LIKE匹配条件

例子:

SELECT "student" LIKE "%tud%", "ttcc" LIKE "tt__";

输出结果为:

image.png

7.REGEXP

REGEXP运算符用来匹配字符串,如果expr满足匹配条件,返回1;如果不满足,则返回0。若expr或匹配条件任意一个为NULL,则结果为NULL。

REGEXP运算符在进行匹配时,常用的有下面几种通配符:

  • ‘^’匹配以该字符后面的字符开头的字符串。

  • ‘$’匹配以该字符后面的字符结尾的字符串。

  • ‘.’匹配任何一个单字符。

  • “[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”“b”或“c”。为了命名字符的范围,使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。

  • ‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字,而“*”匹配任何数量的任何字符。

若指定匹配字符串为“ssky”。“^s”表示匹配任何以字母‘s’开头的字符串,因此满足匹配条件,返回1;“y$”表示任何以字母“y”结尾的字符串,因此满足匹配条件,返回1;“.sky”匹配任何以“sky”结尾、字符长度为4的字符串,满足匹配条件,返回1;“[ab]”匹配任何包含字母‘a’或者‘b’的字符串,指定字符串中既没有字母‘a’也没有字母‘b’,因此不满足匹配条件,返回0。

语法格式为:

expr REGEXP匹配条件

例子:

SELECT "student" REGEXP "$t", "teacher" REGEXP "^t*","adminstration" REGEXP "[a-z]*";

输出结果为:

image.png

总结

  • 7种比较运算符的语法格式与使用案例

好了,今天阿文就介绍到这里了...

0F40B4CC.gif