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创建索引需要了解的
Apr 08 MySQL
将图片保存到mysql数据库并展示在前端页面的实现代码
May 02 MySQL
MySQL 聚合函数排序
Jul 16 MySQL
ORM模型框架操作mysql数据库的方法
Jul 25 MySQL
记一次Mysql不走日期字段索引的原因小结
Oct 24 MySQL
MySQL中int (10) 和 int (11) 的区别
Jan 22 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
单机多实例部署 MySQL8.0.20
May 15 MySQL
MySQL transaction事务安全示例讲解
Jun 21 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 23 MySQL
mysql通过group by分组取最大时间对应数据的两种有效方法
Sep 23 MySQL
MySQL 数据类型详情
Nov 11 #MySQL
MYSQL 表的全面总结
Nov 11 #MySQL
MySQL 服务和数据库管理
面试被问select......for update会锁表还是锁行
mysql的数据压缩性能对比详情
Nov 07 #MySQL
Mysql数据库手动及定时备份步骤
一篇文章看懂MySQL主从复制与读写分离
You might like
Php部分常见问题总结
2006/10/09 PHP
php类
2006/11/27 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
详解JavaScript函数
2015/12/01 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
Express进阶之log4js实用入门指南
2018/02/10 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python列表的增删改查实例代码
2018/01/30 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
python中的垃圾回收(GC)机制
2020/09/21 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
电大自我鉴定
2013/10/27 职场文书
语文教育专业应届生求职信
2013/11/23 职场文书
商场总经理岗位职责
2014/02/03 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python
一文搞懂MySQL索引页结构
2022/02/28 MySQL