爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      mysql学习-模糊查询和过滤数据

      首页 知识中心 数据库 文章详情页

      mysql学习-模糊查询和过滤数据

      2023-05-08 09:59:10 阅读次数:159

      mysql

      格式化结果集

      格式化结果集是铜鼓一些函数,将结果集中的某列数据进行格式化,以方便用户查看。例如将结果集中的日期进行格式化,对小数的位数进行格式化等

      1. 格式化日期

      在mysql中,对日期进行格式化使用的是DATE_FROMAT()函数,语法

      DATE_FORAMT(date,format)
      

      参数说明

      • date : 一个合法的日期
      • format : 规定日期/时间的输出格式

      格式如下所示:

      格式 说明
      %a 简写的英文日期
      %b 简写的英文月份
      %c 数值表示月份
      %D 表示带有英文后缀的月中第几天
      %d 表示月中的第几天(00-31)
      %e 表示月中的第几天(0-31)
      %f 微秒数
      %H 小时数(00-23)
      %h 小时数(01-12)
      %I 小时数(01-12)
      %i 分钟数(00-59)
      %j 表示年中的第几天(001-366)
      %k 小时数(0-23)
      %l 小时数(1-12)
      %M 完整的英文月份
      %m 月份(00-12)
      %p AM或者PM
      %r 12小时制表示时间(hh:mm:ss AM或者PM)
      %S 秒数(00-59)
      %s 秒数(00-59)
      %T 24小时制代表的时间(hh:mm:ss)
      %U 年中的第几周(00-53)星期日是一周的第1天
      %u 年中的第几周(00-53)星期1是一周的第1天
      %W 完整的英文星期
      %w 一周的第几天(0表示的是星期日)
      %Y 4位数表述年份
      %y 2位数表示年份
      SELECT
      	id,
      	`name`,
      	original_price,
      	current_price,
      	DATE_FORMAT(addtime, '%Y/%m/%d') AS '注册时间'
      FROM
      	goods
      LIMIT 6;
      

      2. 数据表的数值类型的转换

      在数据表中,某些数值会以字符串的类型保存,而在使用的时候,可能需要数值的类型,可以使用CAST()函数进行转换

      CAST(expr AS type)
      
      • expr : 表达式

      • type : 目标系统所提供的数据类型,

      SELECT CAST('2365' AS int);
      

      模糊查询

      在对象表中的数据进行查询的时候,常常会用到模糊查询,模糊查询可以轻松查询到比较模糊数据

      1. LIKE 谓词

      使用LIKE 或者NOT LIKE谓词来指定模糊查询条件。定义模糊查询条件需要使用通配符在字符串内查询指定的搜索模式

      常用的通配符

      通配符 说明
      % 由零个或者多个字符组成的任意字符串
      _ 任意单个字符
      [ ] 用于指定范围,例如[A-F],表示A到F范围内的任意字符
      [^ ] 表示指定的范围之外的,例如[^A-F] ,表示A到F范围以为的任意单个符

      LIKE谓词通过使用通配符可以指定任何的模糊查询

      查询某列中包含mr字符的数据,可以出现在任何位置

      WHRER 列名 LIKE '%mr%'
      

      查询出某列包含mr字符的数据,其中mr出现在开头的位置

      WHERE 列名 LIKE 'mr%'
      

      查询出某列包含mr字符的数据,其中mr出现在结尾的位置

      WHERE 列名 LIKE 'mr_'
      

      查询出后两个字符为mr的数据

      WHERE 列名 LIKE '_mr'
      

      查询出某列中以m字段或者r字符开头的数据

      WHERE 列名 LIKE '[mr]%'
      

      查询出某列以a~c之间的字符开头的数据,其中包括a和e

      WHERE 列名 LIKE '[a-e]$'
      

      查询某列不是以a~c字符开头的数据,其中包括a和e

      WHERE 列名 LIKE '[^mr]'%
      

      查询出某列不是以a-c的字符开头的数据

      WHERE 列名 LIKE '[^a-c]%'
      

      2. %通配符的使用

      %通配符表示由零个或者多个字符组成的字符串,在使用LIKE查询的时候,可以在查询条件的任何位置使用%来通配查询任意长度的字符串,也可以使用两个%%通配符进行查询

      SELECT id,`name`,original_price   FROM goods
      WHERE `name` LIKE '%西门子%';
      

      3. _通配符的使用

      _ 通配符表示任意单个字符,该通配符只能匹配一个字符,可以出现在查询条件的任意位置,也可以出现多个

      SELECT id,LTRIM(`name`) AS name ,original_price   FROM goods
      WHERE LTRIM(`name`) LIKE '_ _ _';
      

      4. [ ]通配符

      [ ]表示匹配指定的范围或者集合中的任意当字符,包括指定范围两端的字符

      SELECT id, `name`,introduction ,current_price FROM goods LIMIT 6
      WHERE `name` LIKE '[A-Z]%';
      
      SELECT id,`name`,currentprice FROM goods
      WHERE `name` LIKE '%[6-9]
      

      5.[ ^]通配符

      [ ^]用来查询不在指定范围内的任何单个字符

      SELECT TOP 6 id,name,cat_name
      FROM brand
      WHERE name LIKE '[^A-Z]%';
      

      6 . 使用ESCAPE定义转义字符

      在使用通配符查询数据时,数据可能包含着通配符。当把定义的转义字符放在通配符之间的时候,该通配符被解释为普通字符

      SELECT id ,`name`,introduction  FROM goods
      WHERE introduction LIKE '%/_%' ESCAPE '/';
      

      行数据过滤

      在对数据进行查询的时候,有时候需要查询出表中某一行数据,或者对数据的空值进行处理

      行查询

      1. 查询指定行

      查询表中第n行数据,可以先将前n行的数据查询出来,再将表中的前n-1行数据查询出来,最后通过使用NOT EXIST操作将表中第N行的数据显示出来

      SELECT
      	id,
      	`name`,
      	current_price
      FROM
      	(SELECT * FROM goods LIMIT 6) AA
      WHERE
      	NOT EXISTS (
      		SELECT
      			*
      		FROM
      			(SELECT * FROM goods LIMIT 5) BB
      		WHERE
      			AA.id = BB.id
      	)
      

      2. 随机查询一行数据

      随机查询可以在表中随机查询抽出几行数据,供用户查看

      在mysql中,随机查询可以通过RAND()函数来实现,它可以生成一个0~1之间的随机数

      SELECT id,name,current_price FROM goods
      ORDER BY RAND() LIMIT 5;
      

      3. 在结果集中添加行号

      在结果集中添加行号,可以方便查看

      --- id 按照从大到小顺序重新排序,并对每行的数据进行编号 ---
      SELECT
      	(
      		SELECT
      			COUNT(id)
      		FROM
      			goods A
      		WHERE
      			A.id >= B.id
      	) id,
      	`name`,
      	introduction,
      	current_price
      FROM
      	goods B
      ORDER BY
      	1;
      
      

      2 空值的判断

      空值从技术上来说就是”未知的值“。但是空值并不包括0,一个或者多个空格组成的字符串,以及零长度的字符串。在实际应用中,空值还说明没有向数据库输入相应的数据,或者某个特定的记录行不需要使用该列。在实际操作中,下列几种情况可能使一列成为空值。

      • 其值未知。例如课程表中不明确具体的课程内容
      • 其值不存在。例如学习表中某个学生没有参数考试,所以该学生的考试成绩为空值
      • 列对表行不可用

      1. 查询空值(IS NULL)

      在表中有可能会出现空值,由于空值是未知的值,在对其进行查询的时候不可以像查询其他的值那样用比较或运算等。此时可以用IS NULL 操作符对空值进行查询,它可以查询到列中所有的控制

      SELECT id,`name`,introduction FROM goods
      WHERE introduction IS NULL;
      

      2. 查询非空值(IS NOT NULL)

      SELECT id,`name`,introduction FROM goods
      WHERE introduction IS NOT NULL;
      

      3. 对空值进行处理

      通常需要把空值转化成一个有效的值,便于对数据的理解,或者防止表达式出错。 ISNULL()函数可以对控制转换成为有效的值,而NULLIF()函数可以根据指定的条件来生成空值

      SELECT id,`name`,ISNULL(addtime) AS time FROM goods
      

      列的数值不为NULL的时候,ISNULL()函数将返回原值,当为NULL的时候,ISNULL()函数将对其进行处理,用数值来替代

      数据排序

      理论上讲SLECET语句所返回的结果集都是无序的,结果集中的记录之间顺序主要取决于物理位置,对结果集的排序的唯一方式就是在SELECT查询中嵌入ORDER BY子语句,ORDER BY 子语句用来指定最后结果集中的顺序

      1. 数值排序

      1. 按照升序和降序排列

      当使用SELECT语句查询数据表的时候,数据库系统并不能将数据以特定顺序呈现给用户,如果查询的表的数据比较大,则用户浏览起来很不方便,考虑到效率问题,在SQL中读取数据表的行时引入了一种索引的方法,结果集的行可能就会按照索引的顺序进行排列。

      如果想控制每行的数据在结果集中的出现的顺序,可以向SELECT语句添加ORDER BY子句。 它使数据库对查询结果排序,这样就无需对自己编写的应用程序进行手工排序,ODEDER BY 子句必须放在查询语句的末尾,语法如下

      ORDER BY { oder_by_expression [ ASC | DESC ] } [,.....n]
      

      参数说明

      参数 描述
      order_by_expression 指定要排序的列,可以将排序的列指定为列名或者列的别名(可以由表名或者视图名限定)和表达式,或者指定为代表列选择列表内的名称,别名或者表达式的位置的负整数。可以指定多个排序列,ORDER BY子句的排序定义排序结果集的结构
      ORDER_BY 子句可以包括未出现在此选择列表的项目,而且如果指定SELECT DISTINCT或者如果SELECT 语句包含union运算符的时候,列名或者列的别名必须是第一选择列表内的列名或者列的别名
      ASC 指定按递增顺序(升序),从低到高排序,默认是递增顺序
      DESC 指定按递减顺序(降序),从高到底排序
      # 对商品价格进行降序排列
      SELECT id,`name` , current_price FROM goods
      ORDER BY current_price DESC;
      
      # 对商品价格进行升序排列
      SELECT id,`name` , current_price FROM goods
      ORDER BY current_price ASC;
      

      2. 使用别名排序

      # 对商品价格进行排列,别名
      SELECT id 编号,`name` 名称, current_price 价格 FROM goods
      ORDER BY current_price DESC;
      
      # 对商品价格进行排列,别名如果出现空格,则需要使用引号
      SELECT id 编号,`name` 名称, current_price `商品 价格` FROM goods
      ORDER BY current_price  DESC;
      

      3. 对多列排序

      有时按照一列进行排序之后,如果查询的记录比较多,那么查询结果可能依然不是很清晰,此时可以按照多个列进行排序。SQL指定多列排序,初级排序是对查询结果进行分类排序,第二级排序是对初级排序分好类的数据再次排序,以此类推

      实际编程中经常需要对多列进行数据排序,例如要显示员工清单,可能需要按照姓名进行排序(首先按照姓排序,然后再对每一个姓的集合中按照名字排序),对于多个员工具有相同姓的情况,这样做很有意义

      如果需要对多列进行字段排序,可以对所有要用于排序的列加以限制,当对多列数据进行排序时,优先顺序应该从左到右依次降低,所以在查询语句的ODRDER BY语句的各个列排序很重要

      # 按照商品的价格列和商品名称列对结果进行排序
      # 首先按照价格排序,然后按照名称排序
      SELECT id,`name`,current_price   FROM goods
      ORDER BY current_price,`name`;
      

      对多列排序时,排序顺序有一定的规则。实际上,如果对主排列没有重复值,则不行行次排列,如果在主排列中出现重复值,则需要进行次排列

      说明,在ORDERY BY子句中的第一列为主排序,第二列为次排序

      如果希望某个列上进行降序列,而在其他列上进行升序排列,可以使用DESC关键字对希望降序排列进行限制,如果要对多个列进行降序排序,必须对每个指定DESC关键字

      4. 对数据表中的指定行进行排序

      #对数据表的前几行数据进行排序
      SELECT id,`name`,current_price FROM goods 
      ORDER BY current_price DESC LIMIT 3;
      
      #对数据表的后几行数据进行排序
      SELECT id,`name`,current_price FROM goods 
      ORDER BY current_price  LIMIT 3;
      
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/u_11555417/2967774,作者:羊草,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:pt-osc修改外键内部是如何处理的?

      下一篇:mysql学习-子查询和多表连接

      相关文章

      2025-05-13 09:49:27

      mysql一些小知识点

      mysql 使用的是三值逻辑:TRUE FALSE UNKNOWN。

      2025-05-13 09:49:27
      left , mod , mysql , null , select , user
      2025-05-08 09:04:49

      MySQL-备份+日志:介质故障与数据库恢复

      MySQL-备份+日志:介质故障与数据库恢复

      2025-05-08 09:04:49
      mysql , MySQL , 备份 , 恢复 , 数据库 , 文件 , 日志
      2025-05-08 09:03:29

      windows下mybatis插入mysql数据中文乱码问题解决

      windows下mybatis插入mysql数据中文乱码问题解决

      2025-05-08 09:03:29
      amp , ini , jdbc , mysql , 乱码
      2025-05-07 09:09:52

      基础—SQL—DCL(数据控制语言)之用户管理

      基础—SQL—DCL(数据控制语言)之用户管理

      2025-05-07 09:09:52
      mysql , 创建 , 数据库 , 权限 , 用户 , 访问
      2025-05-07 09:09:52

      基础—SQL—DCL(数据控制语言)小结

      基础—SQL—DCL(数据控制语言)小结

      2025-05-07 09:09:52
      mysql , SQL , 数据库 , 权限 , 用户 , 管理 , 语句
      2025-05-07 09:08:08

      基于servlet+jsp+mysql实现的java web校园车辆管理系统

      本项目是一套基于servlet+jsp+mysql实现的java web校园车辆管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。

      2025-05-07 09:08:08
      mysql , 信息 , 信息管理 , 添加 , 源码
      2025-05-07 09:07:56

      基于JavaFX和mysql实现的驾考习题管理系统

      本项目是一套基于JavaFX和mysql实现的驾考习题管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。

      2025-05-07 09:07:56
      mysql , 数据库 , 项目
      2025-04-11 07:15:54

      java使用JDBC方式操作mysql数据库示例

      java使用JDBC方式操作mysql数据库示例

      2025-04-11 07:15:54
      java , JDBC , mysql , 数据库 , 示例
      2025-04-09 09:17:07

      mysql Commands out of sync; you can‘t run this command now

      mysql Commands out of sync; you can‘t run this command now

      2025-04-09 09:17:07
      mysql , query , 执行
      2025-03-31 08:57:16

      PDO ping 的实例 ,解决mysql has gone的问题

      PDO ping 的实例 ,解决mysql has gone的问题

      2025-03-31 08:57:16
      mysql
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5248687

      查看更多

      最新文章

      mysql一些小知识点

      2025-05-13 09:49:27

      windows下mybatis插入mysql数据中文乱码问题解决

      2025-05-08 09:03:29

      java使用JDBC方式操作mysql数据库示例

      2025-04-11 07:15:54

      mysql Commands out of sync; you can‘t run this command now

      2025-04-09 09:17:07

      PDO ping 的实例 ,解决mysql has gone的问题

      2025-03-31 08:57:16

      navicat导入excel文件的步骤以及可能碰到的问题

      2025-03-26 09:08:50

      查看更多

      热门文章

      Windows下使用批处理实现启动关闭mysql

      2023-04-24 11:27:05

      cdh安装到scm-server的mysql报错处理

      2023-04-28 02:38:44

      Nacos数据持久化到MySQL

      2023-05-12 07:20:56

      python学习——使用MySQL

      2023-04-27 07:57:16

      MySQL的间隙锁

      2023-05-12 07:20:56

      正确理解Mysql的列索引和多列索引

      2023-05-12 07:20:42

      查看更多

      热门标签

      数据库 mysql 字符串 数据结构 MySQL 算法 redis oracle java sql python 数据 索引 SQL 查询
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      MySQL:模糊查询LIKE、REGEXP、IN

      MySQL系列之索引—从数据结构角度理解

      深入解析MySQL分区(Partition)功能

      MySQL实行读写分离的中间件——ProxySQL

      数据表的新建 修改 删除 mysql

      MySQL-图形化界面工具 (上)

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号