MYSQL 运算符总结


Posted in MySQL onNovember 11, 2021

1、算数运算符

MySQL支持的算术运算符:

 

运算符 
作用 
+
加法 
减法
*
乘法 
/,DIV 
除法,返回商
%,MOD 
除法,返回余数

例1: +,-,*,/,%,

mysql> select 0.1+0.333,0.1-0.333,0.1*0.333,1/2,1%2;
+-----------+-----------+-----------+--------+------+
| 0.1+0.333 | 0.1-0.333 | 0.1*0.333 | 1/2    | 1%2  |
+-----------+-----------+-----------+--------+------+
|     0.433 |    -0.233 |    0.0333 | 0.5000 |    1 |
+-----------+-----------+-----------+--------+------+
1 row in set (0.05 sec)

例2:除法运算中,如果除数为0将是返回NULL

mysql> select 1/0;
+------+
| 1/0  |
+------+
| NULL |
+------+
1 row in set (0.00 sec)

例3:模运算的另外一种形式MOD(a,b) 和a%b相同

mysql> select 1%2,mod(1,2);
+------+----------+
| 1%2  | mod(1,2) |
+------+----------+
|    1 |        1 |
+------+----------+
1 row in set (0.00 sec)

2、比较运算符

MySQL支持的比较运算符:

运算符 
作用
=
等于
<>或!= 
不等于
<=>
NULL 安全的等于(NULL-safe)
<
小于 
<= 
小于等于
>
大于 
>= 
大于等于 
BETWEEN
存在与指定范围 
IN
存在于指定集合
IS NULL
为 NULL
IS NOT NULL 
不为 NULL 
LIKE 
通配符匹配 
REGEXP 或 RLIKE 
正则表达式匹配

例1:<>” 和 “=” 相反,如果两则操作不等 返回结果为1,否则返回结果0,“NULL”不能用于“<>”比较

mysql> select 1<>0,1<>1,null<>null;
+------+------+------------+
| 1<>0 | 1<>1 | null<>null |
+------+------+------------+
|    1 |    0 |       NULL |
+------+------+------------+
1 row in set (0.00 sec)

例2:<=>”安全等于运算符和“=”操作相同返回1,区别在于“<=>”在值为null的时候也可以做比较

mysql> select 1<=>1,1<=>0,null<=>null;
+-------+-------+-------------+
| 1<=>1 | 1<=>0 | null<=>null |
+-------+-------+-------------+
|     1 |     0 |           1 |
+-------+-------+-------------+
1 row in set (0.02 sec)

例3:<”当左侧小于右侧时,返回1

mysql> select 'a'<'b','A'<'b','bdf'<'c',1<2;
+---------+---------+-----------+-----+
| 'a'<'b' | 'A'<'b' | 'bdf'<'c' | 1<2 |
+---------+---------+-----------+-----+
|       1 |       1 |         1 |   1 |
+---------+---------+-----------+-----+
1 row in set (0.02 sec)

例4:between,格式为“a BETWEEN min AND max”,表示a大于等于min并且小于等于max的时候,返回1,否则返回0

mysql> select 10 between 10 and 20,9 between 10 and 20;
+----------------------+---------------------+
| 10 between 10 and 20 | 9 between 10 and 20 |
+----------------------+---------------------+
|                    1 |                   0 |
+----------------------+---------------------+
1 row in set (0.01 sec)

例5:regexp,格式为“str REGEXP str_pat”,表示str字符串中含有str_pat相匹配的字符串时,则返回1,否则返回0

mysql> select 'abcdeef' regexp 'ab','abcdef' regexp 'g','abcedf' regexp 'df';
+-----------------------+---------------------+----------------------+
| 'abcdeef' regexp 'ab' | 'abcdef' regexp 'g' | 'abcedf' regexp 'df' |
+-----------------------+---------------------+----------------------+
|                     1 |                   0 |                    1 |
+-----------------------+---------------------+----------------------+
1 row in set (0.01 sec)

其他的使用简单,直接上语法,示例就不写了

  • in,使用格式为“a IN (value1,value2,…)
  • IS NULL,使用格式为“a IS NULL
  • IS NOT NULL,使用格式为“a IS NOT NULL
  • LIKE,使用格式为“a LIKE %123%

3、逻辑运算符

MySQL中的逻辑运算符:

运算符
作用 
NOT 或!
逻辑非 
AND 或&& 
逻辑与 
OR 或 ||
逻辑或 
XOR
逻辑异或 

例1: ““NOT”或“”表示逻辑非。返回和操作数相反的结果。当操作为0,则返回1;当操作为1,则返回0,但是NOT NLLL返回null

mysql> select not 0,!0,not 1,not null;
+-------+----+-------+----------+
| not 0 | !0 | not 1 | not null |
+-------+----+-------+----------+
|     1 |  1 |     0 |     NULL |
+-------+----+-------+----------+
1 row in set (0.00 sec)

例2: AND”和“&&”表示逻辑与运算,当操作数均为非零值,返回结果1,否则返回0,当操作数中有任意一个为NULL,其中一个值如果为0,返回0;其他值都是>0的数值,另外有NULL,则返回NULL

mysql> select (1 and 1),(0 and 1),(3 and 1),(0 and null),(1 and null);
+-----------+-----------+-----------+--------------+--------------+
| (1 and 1) | (0 and 1) | (3 and 1) | (0 and null) | (1 and null) |
+-----------+-----------+-----------+--------------+--------------+
|         1 |         0 |         1 |            0 |         NULL |
+-----------+-----------+-----------+--------------+--------------+
1 row in set (0.00 sec)
mysql> select 1 and NULL and 0;
+------------------+
| 1 and NULL and 0 |
+------------------+
|                0 |
+------------------+
1 row in set (0.00 sec)

mysql> select 1 and NULL and 3;
+------------------+
| 1 and NULL and 3 |
+------------------+
|             NULL |
+------------------+
1 row in set (0.00 sec)

例3:OR”或“||”表示逻辑或运算。当操作数均不为NULL时,任意一方非零,则结果为1,否则为0;当有一个操作数为NULL,如果另一个操作数非零,则结果为1,否则结果为NULL

mysql> select (1 or 0),(0 or 0),(1 or NULL),(0 or NULL),(NULL or NULL);
+----------+----------+-------------+-------------+----------------+
| (1 or 0) | (0 or 0) | (1 or NULL) | (0 or NULL) | (NULL or NULL) |
+----------+----------+-------------+-------------+----------------+
|        1 |        0 |           1 |        NULL |           NULL |
+----------+----------+-------------+-------------+----------------+
1 row in set (0.00 sec)

例4:XOR表示逻辑异或。当任意一个操作数为 NULL 时,返回值为 NULL。对于非 NULL 的操作数,如果两个的逻辑真假值相异,则返回结果 1;否则返回 0。

mysql> select (0 xor 0),(1 xor 0),(1 xor 1),(1 xor null),(0 xor null),(null xor null);
+-----------+-----------+-----------+--------------+--------------+-----------------+
| (0 xor 0) | (1 xor 0) | (1 xor 1) | (1 xor null) | (0 xor null) | (null xor null) |
+-----------+-----------+-----------+--------------+--------------+-----------------+
|         0 |         1 |         0 |         NULL |         NULL |            NULL |
+-----------+-----------+-----------+--------------+--------------+-----------------+
1 row in set (0.00 sec)

4、位运算符

MySQL支持的位运算符:

运算符 
作用
&
位与(位 AND) 
|
位或 (位 OR ) 
^
位异或(位 XOR)
位取反
>>
位右移
<<
位左移 

例1: “位与”对多个操作数的二进制位作逻辑与操作。2&3,2的二进制数为10,3的二进制数为11,将此做与操作,结果还是10,转换为十进制结果就是2

mysql> select 2&3;
+-----+
| 2&3 |
+-----+
|   2 |
+-----+
1 row in set (0.01 sec)

例2: “位或”对多个操作数的二进制位作逻辑或操作。2&3,2的二进制数为10,3的二进制数为11,将此做与操作,结果就变成11,转换为十进制结果就是3

mysql> select 2|3;
+-----+
| 2|3 |
+-----+
|   3 |
+-----+
1 row in set (0.00 sec)

例3:位异或”对多个操作数的二进制位作异或操作。2^3 ,2的二进制数为10,3的二进制数为11,10^11结果就是01,转换为十进制结果就是1

mysql> select 2^3;
+-----+
| 2^3 |
+-----+
|   1 |
+-----+
1 row in set (0.01 sec)

例4: “位取反”对操作数的二进制位做NOT操作,这里的操作数只能是一位,解释:在mysql中常亮数字默认会以8字节表示,8个字节就是64位,而常量1的二进制 就是前面63个0,1个1,位去反后就是63个1,1个0,转换为二进制后就是 18446744073709551614,

mysql> select ~1,~18446744073709551614
    -> ;
+----------------------+-----------------------+
| ~1                   | ~18446744073709551614 |
+----------------------+-----------------------+
| 18446744073709551614 |                     1 |
+----------------------+-----------------------+
1 row in set (0.01 sec)
mysql> select bin(18446744073709551614);
+------------------------------------------------------------------+
| bin(18446744073709551614)                                        |
+------------------------------------------------------------------+
| 1111111111111111111111111111111111111111111111111111111111111110 |
+------------------------------------------------------------------+
1 row in set (0.03 sec)

例5: “位右移”对左操作数向右移动操作数指定的位数。例如100>>3,对100的二进制数0001100100右移动3位,0000001100,转换为二进制数就是12:

mysql> select 100>>3;
+--------+
| 100>>3 |
+--------+
|     12 |
+--------+
1 row in set (0.00 sec)

例6: “位左移”对左操作数向左移动操作数指定的位数。例如100<<3,对100的二进制数0001100100000右移动3位,1100100000000,转换为二进制数就是800:

mysql> select 100<<3;
+--------+
| 100<<3 |
+--------+
|    800 |
+--------+
1 row in set (0.00 sec)

5、运算符的优先级

MySQL中的运算符优先级:

优先级顺序
运算符
1
:= 
2
||, OR, XOR
3
&&, AND 
4
NOT 
5
BETWEEN, CASE, WHEN, THEN, ELSE 
6
=, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
7
8
&
9
<<, >>
10
-, +
11
*, /, DIV, %, MOD 
12
13
- (一元减号), ~ (一元比特反转) 
14

到此这篇关于MYSQL 运算符总结的文章就介绍到这了,更多相关MYSQL 运算符内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
Mysql Show Profile
Apr 05 MySQL
MySQL命令行操作时的编码问题详解
Apr 14 MySQL
MySQL 全文索引使用指南
May 25 MySQL
MySQL索引失效的典型案例
Jun 05 MySQL
MySQL连表查询分组去重的实现示例
Jul 01 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
mysql sum(if())和count(if())的用法说明
Jan 18 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
MySQL去除密码登录告警的方法
Apr 20 MySQL
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
May 08 MySQL
MySQL 数据类型详情
Nov 11 #MySQL
MYSQL 表的全面总结
Nov 11 #MySQL
MySQL 服务和数据库管理
面试被问select......for update会锁表还是锁行
mysql的数据压缩性能对比详情
Nov 07 #MySQL
Mysql数据库手动及定时备份步骤
一篇文章看懂MySQL主从复制与读写分离
You might like
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
菜鸟javascript基础整理1
2010/12/06 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
javascript给span标签赋值的方法
2015/11/26 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
python读取Excel表格文件的方法
2019/09/02 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
迟到检讨书400字
2014/01/13 职场文书
同学聚会老师邀请函
2014/01/28 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
物流业务员岗位职责
2015/04/03 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
圣诞晚会主持词
2015/07/01 职场文书
中学音乐课教学反思
2016/02/18 职场文书
商业计划书范文
2019/04/24 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang