MySQL运算符

运算符

前言

运算符章节和上篇文章中的WHERE过滤配套使用,利用这些和WHERE的配合,查询出自己想要的数据!

1.算术运算符

  • 包括 +(加), -(减), *(乘), /(除) 和 %(取模)
运算符 名称 作用 示例
+ 加法运算符 计算两个表达式或变量的和 SELECT A + B
- 减法运算符 计算两个表达式或变量的差 SELECT A - B
* 乘法运算符 计算两个表达式或变量的乘积 SELECT A * B
/ 除法运算符 计算两个表达式或变量的商 SELECT A / B
% 取模运算符 计算两个表达式或变量的余数 SELECT A % B
  • 加法与减法运算符

一个整数类型的值对整数进行加法和减法操作,结果还是一个整数;

一个整数类型的值对浮点数进行加法和剑法操作,结果还是一个浮点数;

加法和减法的优先级相同,进行先加后减操作与进行先减后加操作的结果是一样的;

Java中,+的左右两边如果有字符串,那么表示字符串的拼接,但是MySQL加号只表示数值的相加,如果想在MySQL中实现字符串拼接,可以用函数**CONCAT()**实现;

  • 乘法与除法运算符

一个数乘以一个整数1和除以一个整数1后仍得到原数。

一个数乘以浮点数1和除以浮点数1后变成浮点数,数值与原数相等;

一个数除以整数后,不管能否除尽,结果都为一个浮点数;

一个数除以另一个数,除不尽时,结果为一个浮点数,并保留到小数点后4位。

乘法和除法优先级相同,先乘后除和先除后乘结果相同。

数学运算中,0不能做除数,在MySQL中,一个数除以0为NULL

  • 取模运算符

没啥说的,记住要取逆模,比如-11 % 2,MySQL算下来结果是-1,但是正确结果应该是(n % m + m) % m;(这就是取逆模,想深入了解可以看看别的文章)。

2.比较运算符

比较运算符用来对表达式左边的操作和右边的操作进行比较,比较的结果为则返回1,比较的结果为则返回0,其他情况则返回NULL

1.等号与安全等于运算符

  • 等号运算符 = 判断等号两边的值,字符串或表达式是否相等,如果相等则返回1,不相等则返回0.
  • 在使用等号运算符时,遵循如下规则:
    • 如果等号两边的值,字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的时每个字符串的每个字符的ANSII码是否相等
    • 如果两边的值都为整数,则比较两个数的值是否相等。
    • 如果一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。
    • 如果等号两边的值,字符串或表达式有一个为NULL,则比较结果就会是NULL
      • 在这里面就会有一个**<=>,这个叫做安全等于运算符,不用这个的话NULL = NULL返回值是NULL**,NULL <=> NULL返回值是
    • 安全等于运算符和等号的作用差不多,但判断NULL时更安全。

2.不等于运算符

  • !=运算符用于判断两边的数字,字符串,表达式的值相不相等,若不相等返回1,相等返回0,但是如果!=两边有NULL ,结果就为NULL

还有很多其他的运算符

运算符 名称 作用 示例
IS NOT NULL 不为空运算符 判断值,字符串或表达式是否不为NULL SELECT B FROM TABLE WHERE A IS NOT NULL
LEAST 最小值运算符 在多个值中返回最小值 SELECT D FROM TABLE WHERE C LEAST(A, B)
GREATEST 最大值运算符 在多个值中返回最大值 SELECT D FROM TABLE WHERE C GREATEST(A, B)
BETWEEN AND 两值之间的运算符 判断一个值在不在这个范围内 SELECT D FROM TABLE WHERE C BETWEEN A AND B
IS NULL 为空运算符 判断一个值,字符串,或表达式是否为空 SELECT B FROM TABLE WHERE A IS NULL
IN 属于运算符 判断一个值是否为列表中的任何一个值 SELECT D FROM TABLE WHERE C IN (A, B)
NOT IN 不属于运算符 判断出一个值不在这个列表中 SELECT D FROM TABLE WHERE C NOT IN (A, B)
LIKE 模糊匹配运算符 判断一个值是否符合模糊匹配规则 SELECT C FROM TABLE WHERE A LIKE B
REGEXP 正则表达式运算符 判断一个值是否符合正则表达式的规则 SELECT C FROM TABLE WHERE A REGEXP B
RLIKE 正则表达式运算符 判断一个值是否符合正则表达式的规则 SELECT C FROM TABLE WHERE A RLIKE B

对于上面表格中的运算符,用法和作用就是表格中的内容,其中有几点注意,LEAST, GREAST, IN, NOT IN其中可以放很多个数据,不是只能放两个,如果LEAST 或GREAST包含NULL的话,返回值也是NULL; IN 和 NOT IN如果IN中包含NULL的话不影响,但是要查询的数据是NULL的话,那么就会返回NULL。
LIKE也是如果给定值或条件是NULL的话,返回结果为NULL。

小拓展

  • 如果不想使用 \ 作为转义字符,可以使用ESCAPE来改变。
  • 回避特殊符号
SELECT job_id
FROM jobs
WHERE job_id like 'IT\_%';
  • 把要转义的字符用ESCAPE修饰
SELECT job_id
FROM jobs
WHERE job_id LIKE 'IT$_%' ESCAPE '$';

3.逻辑运算符

逻辑运算符主要用于判断表达式的真假, 在MySQL中,逻辑运算符的返回结果为1,0,或NULL。

MySQL中支持4种逻辑运算符如下:

运算符 作用 示例
NOT 逻辑非 SELECT NOT A
AND&& 逻辑与 SELECT A AND B
OR|| 逻辑或 SELECT A OR B
XOR 逻辑异或 SELECT A XOR B

1.逻辑非运算符
逻辑非运算符表示当给定的值为FALSE时,返回TRUE,当给定的值为TRUE时返回FALSE,当给定值为NULL时,返回NULL。

2.逻辑与运算符
逻辑与运算符时当给定的所有值均为非0值,并且都不为NULL时,返回TRUE,当给定的一个值或多个值为FALSE时则返回FALSE,否则返回NULL。

3.逻辑或运算符
逻辑或运算符时当给定的所有值,如果有TRUE,就为TRUE(和NULL没关系),如果没TRUE,有NULL就NULL,没NULL就FALSE

4.逻辑异或运算符
逻辑异或运算符时当给定有一个为NULL时,返回NULL,如果两个非NULL值都是FALSE或都是TRUE,则返回FALSE,如果一个是FALSE,一个是TRUE,则返回是TRUE;

4.位运算符

4.1 介绍一下位运算

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

MYSQL支持的位运算符如下

运算符 作用 示例
& 两个都是1,计算后才是1,否则计算后为0 SELECT A & B
| 两个里面有一个是1,就是1,否则计算后为0 SELECT A | B
^ 两个位不同才是1,相同是0 SELECT A ^ B
~ 如果这个数这一位是1,变成0,反之变成1 SELECT ~A
>> 按位右移,例如(二进制)1100 >> 1 为 110 SELECT A >> 1
<< 按位左移,例如 (二进制)1100 << 1 为 11000 SELECT B << 2

相关推荐

  1. Mysql运算符

    2024-07-19 18:12:05       51 阅读
  2. MySQL-运算符

    2024-07-19 18:12:05       46 阅读
  3. MySQL 运算符

    2024-07-19 18:12:05       36 阅读
  4. MySQL运算符

    2024-07-19 18:12:05       20 阅读
  5. MySQL运算符

    2024-07-19 18:12:05       23 阅读
  6. mysql笔记:5. 运算符

    2024-07-19 18:12:05       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 18:12:05       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 18:12:05       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 18:12:05       62 阅读
  4. Python语言-面向对象

    2024-07-19 18:12:05       72 阅读

热门阅读

  1. 【gradle中如何不使用插件将依赖打进jar包】

    2024-07-19 18:12:05       20 阅读
  2. web前端面向对象面试25题

    2024-07-19 18:12:05       20 阅读
  3. 【编程语言】C++和C的异同点

    2024-07-19 18:12:05       21 阅读
  4. 【React Hooks原理 - useSyncExternalStore】

    2024-07-19 18:12:05       16 阅读
  5. Ubuntu22.04:安装并配置nfs

    2024-07-19 18:12:05       21 阅读
  6. udp和tcp区别

    2024-07-19 18:12:05       23 阅读
  7. Leetcode 383. 赎金信

    2024-07-19 18:12:05       20 阅读
  8. 接口加密方案

    2024-07-19 18:12:05       20 阅读
  9. ubuntu24.04 搭建TFTP服务

    2024-07-19 18:12:05       21 阅读
  10. 39、PHP 实现二叉树的下一个结点(含源码)

    2024-07-19 18:12:05       19 阅读
  11. box-shadow

    2024-07-19 18:12:05       17 阅读