[MySQL] 运算符(三)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: [MySQL] 运算符(三)

查询第3个字符是’a’的员工信息

SELECT last_name
FROM employees
WHERE last_name LIKE '__a%';

查询第2个字符是_且第3个字符是’a’的员工信息:

需要使用转义字符: \

# 修改 id 为 100 的 last_name
# 修改语句在后面
UPDATE employees SET last_name='A_a____' WHERE employee_id=100;
SELECT last_name
FROM employees
WHERE last_name LIKE '_\_a%';

ESCAPE:

回避特殊符号的:使用转义符

指定 $ 为转移字符:

查询第2个字符是_且第3个字符是’a’的员工信息:

SELECT last_name
FROM employees
WHERE last_name LIKE '_$_a%' ESCAPE '$';

2.2.6 REGEXP \ RLIKE

REGEXP运算符用来匹配字符串,语法格式为: expr REGEXP 匹配条件 。如果expr满足匹配条件,返回1;如果不满足,则返回0。若expr或匹配条件任意一个为NULL,则结果为NULL。

  • REGEXP运算符在进行匹配时,常用的有下面几种通配符:
  • (1)‘^’匹配以该字符后面的字符开头的字符串。
  • (2)‘$’匹配以该字符前面的字符结尾的字符串。
  • (3)‘.’匹配任何一个单字符。
  • (4)“[…]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
  • (5)‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]”匹配任何数量的数字,而“”匹配任何数量的任何字符。
SELECT
    # 查询以 shk 开头
    'shkstart' REGEXP '^shk',
    # 查询以 t 结尾
    'shkstart' REGEXP 't$',
    # 查询是否包含 hk
    'shkstart' REGEXP 'hk'
FROM DUAL;

SELECT
    # 查询是否包含gu 中间任意 一个 字符 gu
    # 中间只能一个
    'atguigu' REGEXP 'gu.gu',
    # 查询是否包含 a b 其中任意一个
    'atguigu' REGEXP '[ab]'
FROM DUAL;

3. 逻辑运算符

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

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

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

3.1 逻辑非运算符

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

SELECT
    NOT 1,
    NOT 0,
    NOT(1+1),
    NOT !1,
    NOT NULL
FROM DUAL;

# 查询工资不在 6000-8000 之内的员工
SELECT last_name,salary,department_id
FROM employees
where salary not between 6000 and 8000;

# 查询 commission_pct 不为空的员工信息
SELECT last_name,salary,department_id,commission_pct
FROM employees
where commission_pct is not null;
# 或
SELECT last_name,salary,department_id,commission_pct
FROM employees
WHERE NOT commission_pct <=> NULL;

3.2 逻辑与运算符

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

SELECT 1 AND -1, 0 AND 1, 0 AND NULL, 1 AND NULL;
• 1

# 查询部门号为 10且20 的员工信息
SELECT last_name,salary,department_id
FROM employees
where department_id = 10 and department_id = 20;

# 查询部门 50 且 工资大于6000 的员工信息
SELECT last_name,salary,department_id
FROM employees
WHERE department_id = 50 AND salary > 6000;

3.3 逻辑或运算符

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

SELECT 1 OR -1, 1 OR 0, 1 OR NULL, 0 || NULL, NULL || NULL;
• 1

# 查询部门号为 10 或 20 的员工信息
SELECT last_name,salary,department_id
FROM employees
where department_id = 10 or department_id = 20;

注意:

OR可以和AND一起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先对AND两边的操作数进行操作,再与OR中的操作数结合。

可以使用 ( ) 来控制执行顺序。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
关系型数据库 MySQL Java
MYSQL运算符和分页
MYSQL运算符和分页
59 0
|
6月前
|
关系型数据库 MySQL Java
【MySQL进阶之路 | 基础篇】[MySQL]运算符
【MySQL进阶之路 | 基础篇】[MySQL]运算符
|
SQL 关系型数据库 MySQL
MySql where 查询条件与运算符
MySql where 查询条件与运算符
102 0
|
6月前
|
SQL 关系型数据库 MySQL
mysql基本查询、运算符、排序和分页
mysql基本查询、运算符、排序和分页
|
6月前
|
SQL 安全 关系型数据库
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
68 0
|
6月前
|
关系型数据库 MySQL 数据库
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
85 0
|
6月前
|
存储 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-3
MySQL基础篇(运算符、排序分页、多表查询、函数)
96 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-2
MySQL基础篇(运算符、排序分页、多表查询、函数)
90 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-1
MySQL基础篇(运算符、排序分页、多表查询、函数)
90 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据类型、运算符以及数据库范式
MySQL数据类型、运算符以及数据库范式
78 0
MySQL数据类型、运算符以及数据库范式
下一篇
无影云桌面