与MSSQL对比学习MYSQL的心得(五)--运算符

前端技术 2023/09/09 MYSQL

安全等于运算符(<=>)

这个操作符和=操作符执行相同的比较操作,不过<=>可以用来判断NULL值。

在两个操作数均为NULL时,其返回值为1而不为NULL;

而当一个操作数为NULL时,其返回值为0而不为NULL。

下面分别是 SELECT NULL <=>1   SELECT 1<=>0  SELECT NULL <=>NULL 的执行结果

在两个操作数均为NULL时,其返回值为1而不为NULL;



LEAST运算符

语法格式为:LEAST(值1,值2,...值n),其中值n表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。

假如任意一个自变量为NULL,则LEAST()的返回值为NULL

使用LEAST运算符进行大小判断,SQL语句如下:

复制代码 代码如下:

SELECT LEAST(2,0),LEAST(\'a\',\'b\',\'c\'),LEAST(10,NULL)

由结果可以看到,当参数中是整数或者浮点数时,LEAST将返回其中最小的值;

当参数为字符串时,返回字母中顺序最靠前的字符;

当比较值列表中有NULL时,不能判断大小,返回值为NULL

GREATEST运算符

语法格式为: GREATEST(值1,值2,...值n),其中n表示参数列表中有n个值。

在有两个或多个参数的情况下,返回最大值。

假如任意一个自变量为NULL,则GREATEST()的返回值为NULL

使用GREATEST运算符进行大小判断,SQL语句如下:

复制代码 代码如下:

SELECT GREATEST(2,0),GREATEST(\'a\',\'b\',\'c\'),GREATEST(10,NULL)

由结果可以看到,当参数中是整数或者浮点数时,GREATEST将返回其中最大的值;

当参数为字符串时,返回字母中顺序最靠后的字符;

当比较值列表中有NULL时,不能判断大小,返回值为NULL

REGEXP 运算符

在SQLSERVER里是没有正则函数或者运算符的,MYSQL在这方面的确比较完善

用来匹配字符串,语法格式为:expr REGEXP  匹配条件,如果expr满足匹配条件,返回1;

如果不满足,则返回0;

若expr或匹配条件任意一个为NULL,则结果为NULL

常用的几种通配符:

(1)\'^\'匹配以该字符后面的字符开头的字符串

(2)\'$\'匹配以该字符后面的字符结尾的字符串

(3)\'.\'匹配任何一个单字符

(4)\'[...]\'匹配在方括号内的任何字符。例如,“[abc]\" 匹配a、b或c。

字符的范围可以使用一个\'-\',“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字

(5)\'*\' 匹配零个或多个在他前面的字符。例如,“x*”匹配任何数量的\'*\'字符,“[0-9]*”匹配任何数量的数字,

而“.*”匹配任何数量的任何字符。

使用REGEXP  运算符进行字符串匹配运算,SQL语句如下:

复制代码 代码如下:

SELECT \'ssky\' REGEXP \'^s\',\'ssky\' REGEXP \'y$\' ,\'ssky\' REGEXP \'.sky\',\'ssky\' REGEXP \'[ab]\';

由结果可以看到,指定匹配字符串为ssky。

\'^s\'表示匹配任何以字母s开头的字符串,因此满足匹配条件,返回1;

\'y$\'表示匹配任何以字母y结尾的字符串,因此满足匹配条件,返回1;

\'.sky\'表示匹配任何以sky结尾,字符长度为4的字符串,因此满足匹配条件,返回1;

\'^s\'表示匹配任何以字母s开头的字符串,因此满足匹配条件,返回1;

\'[ab]\'表示匹配任何包含字母a或者b的字符串,指定字符串中没有字母a也没有字母b,因此不满足匹配条件,返回0;

TIPS:正则表达式是一个可以进行复杂查询的强大工具,相对于LIKE字符串匹配,他可以使用更多的通配符类型

查询结果更加灵活。

逻辑运算符

逻辑与运算符:AND或者&&

逻辑或运算符:OR或者||

上面两个运算符就不说了,只是比SQLSERVER多了&&和||的写法

异或运算符:XOR

当任意一个操作数为NULL时,返回值为NULL;对于非NULL的操作数,如果两个操作数都是非0值或者都是0值,则返回结果为0;

如果一个为0值,另一个为非0值,返回结果为1

使用异或运算符XOR进行逻辑判断,SQL语句如下

复制代码 代码如下:

SELECT 1 XOR 1, 0 XOR 0,1 XOR 0,1 XOR NULL,1 XOR 1 XOR 1

由结果可以看到‘1 XOR 1\'和‘0 XOR 0\'中运算符两边的操作数都为非零值,或者都是零值,因此返回0;

\'1 XOR 0\'中两边的操作数,一个为0值,另一个为非0值,返回结果为1;

\'1 XOR NULL\'中有一个操作数为NULL,返回结果为NULL;

\'1 XOR 1 XOR 1\'中有多个操作数,运算符相同,因此运算符从左到右依次计算,\'1 XOR 1\'的结果为0,再与1进行异或运算,因此结果为1。

TIPS: a XOR b的计算等同于(a AND (NOT b))或者(NOT a AND ( b))

位运算符

由于比较少用到,这里只做简单介绍,同样位运算符在SQLSERVER里是没有的

位运算符是用来对二进制字节中的位进行测试、移位或者测试处理

MYSQL中提供的位运算有

按位或(|)

按位与(&)

按位异或(^)

按位左移(<<)

按位右移(>>)

按位取反(~):反转所有比特

TIPS:可以使用BIN()=binary函数查看一个十进制数的二进制表示

例如20这个数字 SELECT BIN(20)

二进制表示为:10100

特别提示

某一些MYSQL中的特殊字符需要用转义字符才能插入数据库,否则产生意料之外的结果。

下面的特殊字符需要在输入时加反斜线符号开头

输入单引号需要:\\\'

输入双引号需要:\\\'\'

输入反斜杠:\\\\

输入回车符:\\r

输入换行符:\\n

输入制表符:\\tab

输入退格符:\\b

在插入这些特殊字符到数据库之前一定要进行转义处理

在SQLSERVER里,这些特殊字符不是在前面加反斜杠\\,而是加单引号\'

例如插入一个单引号,加了反斜杠,插入成功

复制代码 代码如下:

INSERT INTO table_1(NAME) VALUES(\'\\\'\')

SELECT * FROM table_1

本文地址:https://www.stayed.cn/item/23630

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。