前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库之运算符详解

数据库之运算符详解

作者头像
小手冰凉
发布2020-04-24 10:39:21
1.3K0
发布2020-04-24 10:39:21
举报
文章被收录于专栏:小手冰凉小手冰凉

一、算术运算符

数据库之运算符详解
数据库之运算符详解

注意:在除法运算和模运算中,如果除数为0,将是非法除法,返回结果为NULL。 例:

代码语言:javascript
复制
mysql> create table tab1(num int);                # 创建一列的表
mysql> insert into tab1 values(64);              # 插入数据
mysql> select num,num+10,num-3,num*3,num%3,num/3 from tab1;     # 使用各种运算符来进行

返回的内容如下:

数据库之运算符详解
数据库之运算符详解

二、比较运算符

select语句中的条件语句经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录时符合条件的,比较结果为真,则返回1,为假则返回0,比较结果不确定则返回NULL。

数据库之运算符详解
数据库之运算符详解

1、等于运算符 等于运算符用来判断数字、字符串和表达式是否相等,如果相等,则返回值为1,否则返回值为0,如果有一个值是NULL,则比较结果是NULL。

代码语言:javascript
复制
mysql> select 1=0,'2'=2,(1+3)=(2+2),NULL=NULL;
数据库之运算符详解
数据库之运算符详解

2、严格等于运算符(<=>) 这个操作符和等于运算符(=)的作用一致,只不过多了一个功能,就是可以判断NULL值,如下:

代码语言:javascript
复制
mysql> select 1<=>0,'2'<=>2,(1+3)<=>(2+2),NULL<=>NULL;
数据库之运算符详解
数据库之运算符详解

3、不等于运算符(<>或!=) 不等于运算符用于判断数字、字符串、表达式是否不相等,如果不相等则返回 1,否则返回 0 ,但是不能判断 NULL 值。

代码语言:javascript
复制
mysql> select 'good'<>'god',1<>2,4!=4,5.5!=5,NULL<>NULL;
数据库之运算符详解
数据库之运算符详解

4、IS NULL 、IS NOT NULL

IS NULL是 检验一个值是否为 NULL ,如果为 NULL ,返回值为 1,否则返回值为 0; IS NOT NULL 检验一个值是否不为 NULL ,如果不为 NULL ,返回值为 1,否则返回值为 0。

代码语言:javascript
复制
mysql> select NULL IS NULL,(10) IS NULL, 10 IS NOT NULL;
数据库之运算符详解
数据库之运算符详解

5、BETWEEN AND 用于判断一个值是否落在两个值之间。

代码语言:javascript
复制
mysql> select 4 between 1 and 5,4 between 4 and 6,12 between 9 and 10;
数据库之运算符详解
数据库之运算符详解

6、LEAST 、GREATEST

LEAST :当有两个或多个参数时,返回最小值,如果有一个值是 NULL ,则返回结果为 NULL; GREATEST :当有两个或多个参数时,返回最大值,如果有一个值是 NULL ,则返回结果为 NULL。

代码语言:javascript
复制
mysql> select least(2,0),least('a','b','c'),least(10,NULL),greatest(2,0),greatest(10,NULL);
数据库之运算符详解
数据库之运算符详解

7、IN、NOT IN

IN :判断一个值是否是 IN 列表中的任意一个值; NOT IN :判断一个值是否不是 IN 列表中的任意一个值。

代码语言:javascript
复制
mysql> select 2 in(3,5,8,2),2 not in(1,3,5);
数据库之运算符详解
数据库之运算符详解

8、LIKE

LIKE 运算符用来匹配字符串,如果匹配则返回 1,如果不匹配则返回 0; LIKE 使用两种通配符:'%' 用于匹配任何数目的字符,包括零字符 ; '_' 只能匹配一个字符。

代码语言:javascript
复制
mysql> select 'stud' like 'stu_','stud' like 's___','stud' like '%d';
数据库之运算符详解
数据库之运算符详解

9、REGEXP

1)REGEXP运算符用来匹配字符串,如果匹配则返回1,如果不匹配则返回0; 2)REGEXP 使用以下几种通配符:

  • '^':用于匹配以什么开头的字符串;
  • '$':用以匹配以什么结尾的字符串;
  • '.':用于匹配任何一个单字符串;
  • '[...]':用于匹配在方括号内的任何字符;
  • '*'用于匹配零个或多个在它前面的字符;
代码语言:javascript
复制
mysql> select 'ssky' regexp '^s','ssky' regexp 'y$','ssky' regexp '.sky','ssky' regexp '[ab]';
数据库之运算符详解
数据库之运算符详解

三、逻辑运算符 逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。

数据库之运算符详解
数据库之运算符详解

1、逻辑非(NOT 或 !)

当操作数为 0 时,所得值为 1; 当操作数为非 0 时,所得值为 0; 当操作数为 NULL 时,所得值为 NULL。

代码语言:javascript
复制
mysql> select not 10,!10,not(1-1),!(1-1),not 1+1,not null;
数据库之运算符详解
数据库之运算符详解

2、逻辑与(AND或&&)

当所有操作数均为非零值、并且不为 NULL 时,所得值为 1; 当一个或多个操作数为 0 时,所得值为 0 ; 其余情况所得值为 NULL。

代码语言:javascript
复制
mysql> select 1 and -1,1 && 0,0 and null,1&& null;
数据库之运算符详解
数据库之运算符详解

3、逻辑或(OR 或 || )

当两个操作数均为非 NULL 值,且任意一个操作数为非零值时,结果为 1 ,否则为 0; 当有一个操作数为 NULL ,且另一个操作数为非零值时,则结果为 1 ,否则结果为 NULL; 当两个操作数均为 NULL 时,则所得结果为 NULL。

代码语言:javascript
复制
mysql> select 1 or -1 or 0,1 || 2,0 or null,null || null;
数据库之运算符详解
数据库之运算符详解

4、逻辑异或(XOR)

a XOR b 的计算等同于 ( a AND (NOT b) ) 或 ( (NOT a) AND b ); 当任意一个操作数为 NULL 时,返回值为 NULL; 对于非 NULL 的操作数,如果两个操作数都是非 0 值或者都是 0 值,则返回结果为 0; 如果一个为 0 值,另一个为非 0 值,返回结果为 1。

代码语言:javascript
复制
mysql> select 1 xor 1,0 xor 0,1 xor 0,1 xor null,1 xor 1 xor 1;
数据库之运算符详解
数据库之运算符详解

四、位运算符

位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。

数据库之运算符详解
数据库之运算符详解

1、位或运算符( | ) 对应的二进制位有一个或两个为 1 ,则该位的运算结果为 1 ,否则为 0。

代码语言:javascript
复制
mysql> select 10|15,9|4|2;
+-------+-------+
| 10|15 | 9|4|2 |                        # 10的二进制为1010,15的二进制为1111,按位或运算之后结果为1111,即15
+-------+-------+                       # 9的二进制为1001,4为0100,2的二进制为0010,按位或运算之后1111,即15
|    15 |    15 |
+-------+-------+
1 row in set (0.00 sec)

2、位与运算符(&) 对应的二进制位都为 1 ,则该位的运算结果为 1 ,否则为 0。

代码语言:javascript
复制
mysql> select 10 & 15,9 & 4 & 2;
+---------+-----------+
| 10 & 15 | 9 & 4 & 2 |
+---------+-----------+
|      10 |         0 |
+---------+-----------+
1 row in set (0.00 sec)

3、位异或运算符(^) 对应的二进制位不相同时,结果为 1 ,否则为 0。

代码语言:javascript
复制
mysql> select 10 ^ 15,1 ^ 0,1^1;
数据库之运算符详解
数据库之运算符详解

4、位左移运算符(<<) 使指定的二进制位都左移指定的位数,左移指定位之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用 0 补齐。

代码语言:javascript
复制
mysql> select 1<<2,4<<2;
数据库之运算符详解
数据库之运算符详解

在上述位左移运算中,1的二进制值为00000001,左移两位之后变成00000100,即十进制数4;4的二进制值为00000100,左移两位之后变成00010000,即十进制数16。 5、位右移运算符(>>) 使指定的二进制位都右移指定的位数,右移指定位之后,右边低位的数值将被移出并丢弃,左边高位空出的位用 0 补齐。

代码语言:javascript
复制
mysql> select 1 >> 1,16 >> 2;
数据库之运算符详解
数据库之运算符详解

6、位取反运算符(~) 将对应的二进制数逐位反转,即 1 取反后变 0 ,0 取反后变 1。

代码语言:javascript
复制
mysql> select 5 &~1;
数据库之运算符详解
数据库之运算符详解

关于上述的返回值解释:SQL语句是将5和进行位取反的数字1进行位与运算(&),位于运算的原则是对应的二进制位都位1,则该位为1,否则为0,5的二进制数为0101,1的二进制数为0001,1进行位取反后的值就是1110,那么0101和1110进行位与运算的结果就是0100,也就是4。

五、运算符优先级

注:最低优先级为:":=" 注:最低优先级为:":=" 注:最低优先级为:":="

数据库之运算符详解
数据库之运算符详解

最高优先级为: !、BINARY、 COLLATE。 最高优先级为: !、BINARY、 COLLATE。 最高优先级为: !、BINARY、 COLLATE。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、算术运算符
  • 二、比较运算符
  • 四、位运算符
  • 五、运算符优先级
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档