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 29 MySQL
MySQL 逻辑备份与恢复测试的相关总结
May 14 MySQL
修改MySQL的数据库引擎为INNODB的方法
May 26 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
MySQL配置主从服务器(一主多从)
Aug 07 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
Mysql排序的特性详情
Nov 01 MySQL
面试被问select......for update会锁表还是锁行
Nov 11 MySQL
MySQL数据库如何使用Shell进行连接
Apr 12 MySQL
MySQL创建管理HASH分区
Apr 13 MySQL
SQL语句多表联合查询的方法示例
Apr 18 MySQL
MySQL如何修改字段类型和字段长度
Jun 10 MySQL
MySQL 数据类型详情
Nov 11 #MySQL
MYSQL 表的全面总结
Nov 11 #MySQL
MySQL 服务和数据库管理
面试被问select......for update会锁表还是锁行
mysql的数据压缩性能对比详情
Nov 07 #MySQL
Mysql数据库手动及定时备份步骤
一篇文章看懂MySQL主从复制与读写分离
You might like
提问的智慧(2)
2006/10/09 PHP
PHP怎样调用MSSQL的存储过程
2006/10/09 PHP
PHP关联链接常用代码
2012/11/05 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
Javascript Global对象
2009/08/13 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
在Python中实现贪婪排名算法的教程
2015/04/17 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
文艺晚会开场白
2015/05/29 职场文书
《去年的树》教学反思
2016/02/18 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
Win10系统下配置Java环境变量
2021/06/13 Java/Android
Sql Server之数据类型详解
2022/02/28 SQL Server
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏