用通配符进行过滤

本章介绍什么是通配符、如何使用通配符以及怎样使用LIKE操作符进行通配搜索,以便对数据进行复杂过滤。

1. LIKE操作符

前面介绍的所有操作符都是针对已知值进行过滤的。不管是匹配一个还是多个值,测试大于还是小于已知值,或者检查某个范围的值,共同点是过滤中使用的值都是已知的。但是,这种过滤方法并不是任何时候都好用。例如,怎样搜索产品名中包含文本anvil的所有产品?用简单的比较操作符肯定不行,必须使用通配符。利用通配符可创建比较特定数据的搜索模式。在这个例子中,如果你想找出名称包含anvil的所有产品,可构造一个通配符搜索模式,找出产品名中任何位置出现anvil的产品。通配符:用来匹配值的一部分的特殊字符。搜索模式:由字面值、通配符或两者组合构成的搜索条件。
为在搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。

2.百分号(%)通配符

%表示任何字符出现任意次数。

-- 找出所有词jet起头的产品

此例子使用了搜索模式'jet%'。在执行这条子句时,将检索任意以jet起头的词。%告诉MySQL接受jet之后的任意字符,不管它有多少字符。

-- 匹配任何位置包含文本anvil的值

搜索模式'%anvil%'表示匹配任何位置包含文本anvil的值,而不论它之前或之后出现什么字符。

-- 找出以s起头以e结尾的所有产品

注意尾空格:尾空格可能会干扰通配符匹配。例如,在保存词anvil 时,如果它后面有一个或多个空格,则子句WHERE prod_name LIKE '%anvil'将不会匹配它们,因为在最后的l后有多余的字符。解决这个问题的一个简单的办法是在搜索模式最后附加一个%。一个更好的办法是使用函数RTrim()去掉首尾空格。注意NULL:虽然似乎%通配符可以匹配任何东西,但有一个例外,即NULL。即使是WHERE prod_name LIKE '%'也不能匹配用值NULL作为产品名的行。

3.下划线(_)通配符

下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符。

-- 下划线(_)通配符

参考:《MySQL必知必会》

mysql like 多个条件_MySQL之用通配符进行过滤相关推荐

  1. mysql like 多个条件_MySQL高性能索引策略

    索引类型 从物理存储角度: 聚集索引 InnoDB 叶节点包含了完整的数据记录.这种索引叫做聚集索引.因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有 ...

  2. mysql视图的更新 条件_mysql中视图更新详解

    视图的可更新性与视图中查询的定义是有关的 一.mysql中那些试图使不可更新的?以下类型的视图是不可更新的 1.包含以下关键字的sql语句:聚合函数(sum.min.max.count).distin ...

  3. mysql两个表条件_mysql – 在另一个表中选择具有多个条件的...

    这是我的简化数据库方案 -- ----------------------------------------------------- -- Table `products` -- -------- ...

  4. mysql inner join多条件_Mysql中Left Join Right Join Inner Join where条件的比较

    建立一对多的表 company 和 employee company表 id      name      address 1baidu北京 2huawei深圳 3jingdong北京 4tengxu ...

  5. mysql格式化日期做条件_mysql格式化日期

    mysql查询记录如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的含义,现提供mysql格式换时间函数,可以方便的看到格式化后的时间. 1. DATE_FORMAT() 函数用于以不同的格 ...

  6. mysql左外连接条件_mysql – 左外连接的MAX条件

    ---------- samples ---------- SamplesID stylenumber stylename status ----------- samples_details --- ...

  7. MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...

    ### 第3篇:MySQL基本操作语句 - MySQL基础操作 #### 排序检索数据 - 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的 - SELECT语句的ORDER BY 子句进行 ...

  8. 为什么 ElasticSearch 比 MySQL 更适合复杂条件搜索

    熟悉 MySQL 的同学一定都知道,MySQL 对于复杂条件查询的支持并不好.MySQL 最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤. 上述这种处理复杂条件查询的方 ...

  9. 为什么ElasticSearch比MySQL更适合复杂条件搜索

    熟悉 MySQL 的同学一定都知道,MySQL 对于复杂条件查询的支持并不好.MySQL 最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤. 上述这种处理复杂条件查询的方 ...

  10. mysql面试关联查询语句_MySQL百万级、千万级数据多表关联SQL语句调优

    作者:成金之路 www.cnblogs.com/uttu/p/6384541.html 本文不涉及复杂的底层数据结构,通过explain解释SQL,并根据可能出现的情况,来做具体的优化,使百万级.千万 ...

最新文章

  1. 人工智能可落地项目总结
  2. 如何画出漂亮的深度学习模型图
  3. 字节跳动 2019 ICME 双赛道冠军团队方案分享
  4. 用8小时工作,用24小时思考
  5. 支付宝「集五福」的阳谋
  6. linux判断内存并释放,linux 内存清理/释放命令
  7. 深入分析glibc内存释放时的死锁bug
  8. Android ListView下拉与上拉刷新加载更多(一)
  9. BigInt:JavaScript 中的任意精度整数
  10. Java并发编程之Java线程池
  11. MySQL定时备份数据库方案(全库备份)
  12. 【渝粤教育】国家开放大学2018年秋季 0734-21T出纳实务 参考试题
  13. Spring整合MyBatis之SqlSession对象的产生
  14. HTML注册页面的设计
  15. 大学计算机word文档试题,大学WORD文档练习题.doc
  16. 计算机共享访问权限,设置电脑共享权限、电脑文件共享权限设置、设置共享文件夹访问权限的方法...
  17. 客户需求分析8个维度_想做好需求分析?这3个问题你需要解答
  18. win10禁用键盘自带关机键
  19. 服务器网站首页被被修改,web服务器被入侵修改内容后如何处理
  20. APP自动化原理+环境搭建

热门文章

  1. Ubuntu下VirtualBox的vdi文件克隆
  2. Apache Rewrite实现URL的301跳转和域名跳转
  3. DedeCMS5.5 调用当前内容页TAG标记的办法
  4. ASP.NET 2.0中合并 GridView 的表头单元格
  5. 进程介绍(理论部分)
  6. VS2010 快捷键设置,快速编码1
  7. Extjs自定义日期控件的显示格式
  8. haproxy之安装与配置详解
  9. [推荐]一个 1kb 的image placeholder的js库
  10. OpenSSL学习(二十二):基础-指令sess_id