MySQL篇(运算符)(持续更新迭代)

目录

一、简介

二、运算符使用

1. 算术运算符

1.1. 加法运算符

1.2. 减法运算符

1.3. 乘法与除法运算符

1.4. 求模(求余)运算符

2. 比较运算符

2.1. 等号运算符

2.2. 安全等于运算符

2.3. 不等于运算符

2.4. 空运算符

2.5. 非空运算符

2.6. 最小值运算符

2.7. 最大值运算符

2.8. BETWEEN AND运算符

2.9. IN运算符

2.10. NOT IN运算符

2.11. LIKE运算符

2.12. REGEXP运算符

3. 逻辑运算符

3.1. 逻辑非运算符

3.2. 逻辑与运算符

3.3. 逻辑或运算符

3.4. 逻辑异或运算符

4. 位运算符

4.1. 按位与运算符

4.2. 按位或运算符

4.3. 按位异或运算符

4.4. 按位取反运算符

4.5. 按位右移运算符

4.6. 按位左移运算符

三、运算符的优先级


一、简介

运算符连接表达式中各个操作数,其作用是用来指明对操作数所进行的运算。

MySQL 支持 4 种运算符,分别是算术运算符、比较运算

符、逻辑运算符、位运算符:

  • 算术运算包括加、减、乘、除等。
  • 比较运算符包括大于、小于、等于或不等于。比较运算符用于数值的比较、字符串的匹配等方面。
  • 逻辑运算符包括与、或、非、异或等。逻辑运算符返回值为布尔型,真值(1 或 true)和假值(0 或 false)。
  • 位运算符包括按位与、按位或、按位取反、按位异或、按位左移和按位右移等位运算符。位运算先将数据转换为补码,然后在根据数据的补码进行操作。运算完成后,将得到的值转换为十进制数。

二、运算符使用

1. 算术运算符

算术运算符用于数学运算,它可以连接运算符前后的两个数值或表达式,

对数值或表达式进行加、减、乘、除和取模运算。

运算符

名称

作用

例子

+

加法运算符

计算两个值或表达式的和

SELECT A + B

-

减法运算符

计算两个值或表达式的差

SELECT A - B

*

乘法运算符

计算两个值或表达式的乘积

SELECT A * B

/ 或 DIV

除法运算符

计算两个值或表达式的商

SELECT A / B 或者 SELECT A DIV B

% 或 MOD

求余运算符

计算两个值或表达式的余数

SELECT A % B 或者 SELECT A MOD B

1.1. 加法运算符

SELECT 100, 100 + 50, 100 + 35.5 FROM `user`;

注意:两个整数类型值进行加法操作,结果是整数;一个整数类型的值和浮点数进行加法操作,结果是浮点数。

1.2. 减法运算符

SELECT 100, 100 - 50, 100 - 35.5 FROM `user`;

注意:两个整数类型值进行减法操作,结果是整数;一个整数类型的值和浮点数进行减法操作,结果是浮点数。

1.3. 乘法与除法运算符

SELECT 100 * 1, 100 * 1.0, 100 / 1.0, 100 / 2, 100 DIV 0 FROM `user`;

注意:一个数除以整数后,不管是否能除尽,结果为浮点数;一个数除以另一个数,除不尽时,结果为浮点数,

并保留到小数点后4位;在MySQL中,一个数除以0为NULL。

1.4. 求模(求余)运算符

SELECT 10 % 3, 12 MOD 5 FROM `user`;

2. 比较运算符

比较运算符对表达式左边的值和右边的值进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情

况则返回NULL。

运算符

名称

作用

例子

=

等于运算符

判断两个值、字符串或表达式是否相等

SELECT * FROM TABLE WHERE A=B

<=>

安全等于运算符

安全地判断两个值、字符串或表达式是否相等

SELECT * FROM TABLE WHERE A<=>B

<> 或者 !=

不等于运算符

判断两个值、字符串或表达式是否不相等

SELECT * FROM TABLE WHERE A<>B 或者 SELECT * FROM TABLE WHERE A!=B

<

小于运算符

判断前面的值、字符串或表达式是否小于后面的值、字符串或表达式

SELECT * FROM TABLE WHERE A<B

<=

小于等于运算符

判断前面的值、字符串或表达式是否小于等于后面的值、字符串或表达式

SELECT * FROM TABLE WHERE A<=B

>

大于运算符

判断前面的值、字符串或表达式是否大于后面的值、字符串或表达式

SELECT * FROM TABLE WHERE A>B

>=

大于等于运算符

判断前面的值、字符串或表达式是否大于等于后面的值、字符串或表达式

SELECT * FROM TABLE WHERE A>=B

2.1. 等号运算符

SELECT 3 = 3, 2 = '2', 3 = 4, 'a' = 'a', (4 + 6) = (2 + 8), '' = NULL , NULL = NULL; 

总结:

  • 等号运算符判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0。
  • 如果等号两边的值、字符串或表达式都为字符串,则会按照字符串进行比较,比较每个字符串中字符的ANSI编码是否相等。
  • 如果等号两边的值都是整数,则会按照整数来比较两个值的大小。
  • 如果等号一边是整数,另一边是字符串,则将字符串转化为数字进行比较。
  • 如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。

2.2. 安全等于运算符

  • 安全等于运算符与等于运算符的作用是相似的, 唯一的区别 安全等于运算符是用来对NULL进行判断。
  • 当两个操作数都为 NULL 时,其返回值为1;当一个操作数为 NULL 时,其返回值为 0。
SELECT 1 <=> '1', 1 <=> 0, 'a' <=> 'a', (3 + 3) <=> (1 + 2), '' <=> NULL,NULL <=> NULL FROM `user`;

2.3. 不等于运算符

  • 不等于运算符用于判断两边操作数的值是否不相等,如果不相等则返回1,相等则返回0。
  • 如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL。

非符号类型的运算符:

运算符

名称

作用

例子

IS NULL

为空运算符

判断值、字符串或表达式是否为空

SELECT * FROM TABLE WHERE A IS NULL

IS NOT NULL

不为空运算符

判断值、字符串或表达式是否不为空

SELECT * FROM TABLE WHERE A IS NOT NULL

LEAST

最小值运算符

在多个值中返回最小值

SELECT * FROM TABLE WHERE C LEAST(A,B)

GREATEST

最大值运算符

在多个值中返回最大值

SELECT * FROM TABLE WHERE C GREATEST(A,B)

BETWEEN AND

两个数值之间的运算符

判断数值是否在两个值之间

SELECT * FROM TABLE WHERE C BETWEEN AND(A,B)

IN

属于运算符

判断数值是否在列表中的任意值

SELECT * FROM TABLE WHERE C IN (A,B)

NOT IN

不属于运算符

判断数值是否不是在列表中的任意值

SELECT * FROM TABLE WHERE C NOT IN (A,B)

LIKE

模糊匹配运算符

判断数值是否符合模糊匹配规则

SELECT * FROM TABLE WHERE C LIKE B

REGEXP

正则表达式运算符

判断数值是否符合正则表达式

SELECT * FROM TABLE WHERE C REGEXP B

RLIKE

正则表达式运算符

判断数值是否符合正则表达式

SELECT * FROM TABLE WHERE C RLIKE B

2.4. 空运算符

空运算符判断一个值是否为NULL,如果为NULL则返回1,否则返回0。

SELECT NULL IS NULL, ISNULL(NULL), ISNULL('a'), 1 IS NULL;

2.5. 非空运算符

非空运算符判断一个值是否不为NULL,如果不为NULL则返回1,否则返回0。

SELECT NULL IS NOT NULL; 
SELECT 'a' IS NOT NULL;
SELECT 1 IS NOT NULL ;

2.6. 最小值运算符

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

SELECT LEAST (1,0,2), LEAST('b','a','c'), LEAST(1,NULL,2);

  • 当参数是整数或者浮点数时,LEAST将返回其中最小的值;
  • 当参数为字符串时,返回字母表中顺序最靠前的字符;
  • 当比较值列表中有NULL时,不能判断大小,返回值为NULL。

2.7. 最大值运算符

当有两个或多个参数时,返回值为最大值。假如任意一个自变量为NULL,则GREATEST()的返回值为NULL。

SELECT GREATEST(1,0,2), GREATEST('b','a','c'), GREATEST(1,NULL,2);

  • 当参数中是整数或者浮点数时,GREATEST将返回其中最大的值;
  • 当参数为字符串时,返回字母表中顺序最靠后的字符;
  • 当比较值列表中有NULL时,不能判断大小,返回值为NULL。

2.8. BETWEEN AND运算符

SELECT D FROM TABLE WHERE C BETWEEN A AND B,此时,当C大于或等于A,并且C小于或等于B时,结果为1,否则结果为0。

SELECT 1 BETWEEN 0 AND 1, 10 BETWEEN 11 AND 12, 'b' BETWEEN 'a' AND 'c';

2.9. IN运算符

  • IN运算符用于判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0;
  • 如果给定的值为NULL,或者IN列表中存在NULL,则结果为NULL。
SELECT 'a' IN ('a','b','c'), 1 IN (2,3), NULL IN ('a','b'), 'a' IN ('a', NULL);

2.10. NOT IN运算符

NOT IN运算符用于判断给定的值是否不是IN列表中的一个值,如果不是IN列表中的一个值,则返回1,否则返回0。

SELECT 'a' NOT IN ('a','b','c'), 1 NOT IN (2,3);

2.11. LIKE运算符

LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回0;

如果给定的值或者匹配条件为NULL,则返回结果为NULL。

LIKE运算符通常使用如下通配符:

  • "%":匹配0个或多个字符。
  • "_":只能匹配一个字符。
SELECT NULL LIKE 'abc', 'abc' LIKE NULL;

ESCAPE:关键字的主要作用就是指定一个字符替代“\”的作用。

  • 回避特殊符号的:使用转义符。例如:将[%]转为[],然后再加上[ESCAPE‘$’]即可。
  • 如果使用\表示转义,要省略ESCAPE。如果不是\,则要加上ESCAPE。

2.12. REGEXP运算符

REGEXP运算符用来匹配字符串,满足匹配条件返回1;不满足则返回0。

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

REGEXP运算符常用的通配符:

  • ‘^’匹配以该字符后面的字符开头的字符串。
  • ‘$’匹配以该字符前面的字符结尾的字符串。
  • ‘.’匹配任何一个单字符。
  • “[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
  • ‘ * ’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]”匹配任何数量的数字,而“”匹配任何数量的任何字符。
SELECT 'shkstart' REGEXP '^s', 'shkstart' REGEXP 't$', 'shkstart' REGEXP 'hk';

3. 逻辑运算符

逻辑运算符用来判断表达式的真假,逻辑运算符的返回结果为1、0或者NULL。

运算符

作用

例子

NOT 或 !

逻辑非

SELECT NOT A

AND 或&&

逻辑与

SELECT A AND B或者 SELECT A && B

OR 或 ||

逻辑或

SELECT A OR B或者 SELECT A || B

XOR

逻辑异或

SELECT A XOR B

3.1. 逻辑非运算符

  • 逻辑非运算符表示当给定的值为0时返回1;
  • 当给定的值为非0值时返回0;
  • 当给定的值为NULL时,返回NULL。
SELECT NOT 1, NOT 0, NOT(1+1), NOT !1, NOT NULL; 

3.2. 逻辑与运算符

  • 逻辑与运算符是当给定的所有值均为非0值,并且都不为NULL时,返回1;
  • 当给定的一个值或者多个值为0时则返回0,否则返回NULL。
SELECT 1 AND -1, 0 AND 1, 0 AND NULL, 1 AND NULL;

3.3. 逻辑或运算符

  • 逻辑或运算符是当给定的值都不为NULL,并且任何一个值为非0值时,则返回1,否则返回0;
  • 当一个值为NULL,并且另一个值为非0值时,返回1,否则返回NULL;
  • 当两个值都为NULL时,返回NULL。
SELECT 1 OR -1, 1 OR 0, 1 OR NULL, 0 || NULL, NULL || NULL;

3.4. 逻辑异或运算符

  • 逻辑异或运算符是当给定的值中任意一个值为NULL时,则返回NULL;
  • 如果两个非NULL的值都是0或者都不等于0时,则返回0;
  • 如果一个值为0,另一个值不为0时,则返回1。
SELECT 1 XOR -1, 1 XOR 0, 0 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1, 0 XOR 0 XOR 0;

4. 位运算符

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

运算符

作用

例子

&

按位与

SELECT A & B

|

按位或

SELECT A | B

^

按位异或

SELECT A ^ B

~

按位取反

SELECT A ~ B

>>

按位右移

SELECT A >> B

<<

按位左移

SELECT A << B

4.1. 按位与运算符

  • 按位与运算符将给定值对应的二进制数逐位进行逻辑与运算。
  • 当给定值对应的二进制位的数值都为1时,则该位返回1,否则返回0。
SELECT 1 & 10, 20 & 30;

  • 1的二进制数为0001,10的二进制数为1010,所以1 & 10的结果为0000,对应的十进制数为0。
  • 20的二进制数为10100,30的二进制数为11110,所以20 & 30的结果为10100,对应的十进制数为20。

4.2. 按位或运算符

  • 按位或运算符将给定的值对应的二进制数逐位进行逻辑或运算。
  • 当给定值对应的二进制位的数值有一个或两个为1时,则该位返回1,否则返回0。
SELECT 1 | 10, 20 | 30;

  • 1的二进制数为0001,10的二进制数为1010,所以1 | 10的结果为1011,对应的十进制数为11。
  • 20的二进制数为10100,30的二进制数为11110,所以20 | 30的结果为11110,对应的十进制数为30。

4.3. 按位异或运算符

  • 按位异或运算符将给定的值对应的二进制数逐位进行逻辑异或运算。
  • 当给定值对应的二进制位的数值不同时,则该位返回1,否则返回0。
SELECT 1 ^ 10, 20 ^ 30; 

  • 1的二进制数为0001,10的二进制数为1010,所以1 ^ 10的结果为1011,对应的十进制数为11。
  • 20的二进制数为10100,30的二进制数为11110,所以20 ^ 30的结果为01010,对应的十进制数为10。

4.4. 按位取反运算符

按位取反运算符将给定的值的二进制数逐位进行取反操作,即将1变为0,将0变为1。

SELECT 10 & ~1;

  • 由于按位取反运算符的优先级高于按位与运算符的优先级;
  • 10 & ~1,首先,对数字1进行按位取反操作,结果除了最低位为0;
  • 其他位都为1,然后与10进行按位与操作,结果为10。

4.5. 按位右移运算符

  • 按位右移运算符将给定的值的二进制数的所有位右移指定的位数。
  • 右移指定的位数后,右边低位的数值被移出并丢弃,左边高位空出的位置用0补齐。
SELECT 1 >> 2, 4 >> 2;

1的二进制数为0000 0001,右移2位为0000 0000,对应的十进制数为0。

4的二进制数为0000 0100,右移2位为0000 0001,对应的十进制数为1。

4.6. 按位左移运算符

  • 按位左移运算符将给定的值的二进制数的所有位左移指定的位数。
  • 左移指定的位数后,左边高位的数值被移出并丢弃,右边低位空出的位置用0补齐。
SELECT 1 << 2, 4 << 2;

1的二进制数为0000 0001,左移两位为0000 0100,对应的十进制数为4。

4的二进制数为0000 0100,左移两位为0001 0000,对应的十进制数为16。

三、运算符的优先级

优先级

运算符

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

!

15

()

数字编号越大优先级越高,优先级高的运算符先进行计算。

赋值运算符的优先级最低,使用“()”括起来的表达式的优先级最高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142223.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

java -- JDBC

一.JDBC概述: 过java语言操作数据库中的数据。 1.JDBC概念 JDBC&#xff08;Java DataBase Connectivity,java数据库连接&#xff09;是一种用于 执行SQL语句的Java API。JDBC是Java访问数据库的标准规范&#xff0c;可以 为不同的关系型数据库提供统一访问&#xff0c;它由…

CORS跨域请求共享

参考文章: https://xz.aliyun.com/t/12001?time__1311GqGxRGiti%3Dd052x%2BxCwx7qGIxpbDulE%3DoD https://blog.csdn.net/weixin_46622976/article/details/128452494 跨域资源共享 自己的理解&#xff0c;一般来讲&#xff0c;我们使用未授权的接口漏洞&#xff0c;都是因…

Django学习实战篇四(适合略有基础的新手小白学习)(从0开发项目)

前言&#xff1a; 在本章中&#xff0c;我们开始编写面向用户的界面&#xff0c;其中只涉及简单的HTML结构&#xff0c;不会做太多美化&#xff0c;目的就是把后台创建的数据展示到前台。 从技术上来讲&#xff0c;这一节将涉及Django 中function view和 class-based view 的用…

robosuite基础教程(一)——基本概念

robosuite和robomimic都是由ARISE Initiative开发的开源工具&#xff0c;旨在推进机器人学习和机器人操作领域的研究。 一、基本概念 robosuite是一个由MuJoCo物理引擎驱动的模拟框架&#xff0c;专为机器人学习设计。它提供了一套基准环境&#xff0c;是Advancing Robot Int…

Linux实操笔记2 Ubuntu安装Nginx的不同方法

今天来了解Ubuntu或者说Linux系统安装Nginx的几种办法。包括从Ubuntu的库安装到官方源码编译安装。 一、Nginx是什么&#xff1f; 以下是来自Nginx中文文档的内容。 Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器&#xff1a;相比…

瓶中水位检测系统源码分享

瓶中水位检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

研1日记13

正态分布&#xff1a; toTenor&#xff1a;转数字变为0-1 加载模型&#xff1a; model youmodel() model.load("路径") 测试单个样本&#xff1a;

模特妙善:一位多才多艺的短视频达人,绽放新光彩

模特妙善&#xff0c;在当今多元化的网络时代&#xff0c;短视频已成为人们生活中不可或缺的一部分。而在这一领域中&#xff0c;有一位以其独特魅力和多才多艺而备受瞩目的达人&#xff0c;她就是妙善&#xff0c;本名高艳芳。 模特妙善&#xff0c;出生于山西省的著名景点——…

fiddler抓包01:工具介绍

课程大纲 fiddler是一款常见的抓包工具&#xff0c;可以对web端和移动端的接口请求进行抓包&#xff08;截获&#xff09;、分析、编辑、模拟等&#xff0c;还可以导出jmeter、Loadrunner测试脚本。 1、原理 fiddler作为代理服务器&#xff0c;拦截请求和服务器响应。 2、使用…

PCIe进阶之TL:Request Handling Rules

1 Handling of Received TLPs 本节介绍接收到的 TLP 在数据链路层经过完整性验证之后,这些 TLP 在事务处理层时的处理方式。这些规则如下图所示: 接收侧会忽略保留字段。如果 Fmt 字段显示存在至少一个 TLP Prefix : (1)通过检查后续 DWORD 的第一个字节中的 Fmt 字段,…

【数据结构】第八节:链式二叉树

个人主页&#xff1a; NiKo 数据结构专栏&#xff1a; 数据结构与算法 源码获取&#xff1a;Gitee——数据结构 一、二叉树的链式结构 typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTreeNode* left; // 左子树根节点struct BinaryT…

day01 - Java基础语法

第一章 Java概述 1995年美国Sun推出Java&#xff0c;2009年Sun公司被甲骨文收购 Java之父&#xff1a;詹姆斯高斯林&#xff08;James Gosling&#xff09; Java编译器将源程序编译成与平台无关的字节码文件(class文件),然后由JVM对字节码文件解释执行。不同操作系统&#xf…

71、哪吒开发板试用结合oak深度相机进行评测

基本思想:收到intel的开发板-小挪吒,正好手中也有oak相机,反正都是openvino一套玩意,进行评测一下,竟然默认是个window系统,哈哈

鸿蒙媒体开发系列01——资源分类访问

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01;扫描下方名片&#xff0c;关注公众号&#xff0c;公众号更新更快&#xff0c;同时也有更多学习资料和技术讨论群。 1、概述 应用开发过程中&#xff0c;经常需要用到颜色、字体、间距、图片等资源&am…

Vue3+Element Plus:使用el-dialog,对话框可拖动,且对话框弹出时仍然能够在背景页(对话框外部的页面部分)上进行滚动以及输入框输入信息

【需求】 使用Element Plus中的el-dialog默认是模态的&#xff08;即它会阻止用户与对话框外部的元素进行交互&#xff09;&#xff0c;对话框弹出时仍然能够在背景页&#xff08;对话框外部的页面部分&#xff09;上进行滚动以及输入框输入信息&#xff0c;且对话框可拖动 【…

双三次插值及MATLAB实现

一、双三次插值的概念 双三次插值&#xff08;Bicubic interpolation&#xff09;&#xff0c;又叫双立方插值。在数值分析这个数学分支中&#xff0c;双三次插值是二维空间中最常用的插值方法。在这种方法中&#xff0c;函数f在点 (x0 ,y0) 的值不仅考虑其直接邻接点对其的影响…

mybatis开启日志

步骤很详细&#xff0c;直接上教程 配置文件的文件格式可能有所不同&#xff0c;这里列举两种 配置方法 一. application.properties&#xff08;默认 # 配置mybatis的日志信息 mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl二. application.y…

基于python+django+vue的在线学习资源推送系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

工程师 - ACPI介绍_2

Advanced Configuration and Power Interface (ACPI) Introduction and Overview Version 1.4 : 26 April 2016 Copyright © 2016 Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. 本章提供了高级配置和电源…

【ACM出版,录用检索快】2024年第四届工商管理与数据科学国际学术会议 (BADS 2024,10月25-27)

2024年第四届工商管理与数据科学国际学术会议(BADS 2024)将于2024年10月25-27日在中国重庆召开&#xff0c;大会由喀什大学支持。 在当今全球化与数字化迅速发展的时代&#xff0c;工商管理与数据科学作为推动经济增长和技术进步的重要力量&#xff0c;正以前所未有的速度交叉融…