4.4 like通配符关键字过滤查询数据
文章目录
- 1.概述
- 2.LIKE关键字
- 3.百分号(%)通配符
- 3.1 单个百分号(%)通配符
- 3.2 多个百分号(%)通配符
- 3.3 在值的中间使用百分号(%)通配符
- 3.4 注意事项
- 4.下划线(_)通配符
- 5.使用通配符的技巧
1.概述
通配符是用来匹配值的一部分的特殊字符;
本小节介绍如何使用通配符以及怎样使用LIKE关键字进行通配搜索,以便于对数据进行复杂过滤;
2.LIKE关键字
前面介绍过所有操作符都是针对已知值进行过滤的,不管是匹配一个还是多个值,测试大于还是小于已知值,或者检查某个范围的值,共同点是过滤中使用的值都是已知的。
但是这种过滤方法并不是任何时候都好用。例如,搜索产品名中包含文本anvil的所有产品时,用简单的比较操作符肯定是不行的,必须使用通配符。
利用通配符可以创建比较特定的搜索模式,在这个例子中,如果你想找出名称中包含anvil的所有产品,可以构造一个通配符搜索模式,找出产品中任何位置出现anvil的产品。
为在搜索子句中使用通配符,需要使用LIKE关键字,LIKE指示MySql后跟的搜索模式使用通配符匹配,而不是直接相等匹配进行搜索。
3.百分号(%)通配符
最常使用的通配符是百分号(%)。在搜索串中,%表示任何字符出现任意次数。
3.1 单个百分号(%)通配符
例如,为了找出所有以jet开头的产品,可以使用下列SQL:
输入:
SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE 'jet%';
输出:
此例子使用了搜索模式 ‘jet%’。在执行子句时,将查询任意以jet开头的词,不管后续有多少字符,什么字符,%都告诉SQL匹配它;
3.2 多个百分号(%)通配符
通配符可以在搜索模式中的任意位置使用,并且可以使用多个通配符。下列的例子将使用俩个通配符,且位于模式的俩端:
输入:
SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE '%anvil%';
输出:
此例子使用了搜索模式 ‘%anvil%’。在执行子句时,%通配符告诉SQL将匹配任意位置文本包含 anvil 的值,而不论 anvil 之前或之后出现什么值,出现多少值,哪怕是没有,以anvil开头的也匹配;
3.3 在值的中间使用百分号(%)通配符
通配符也可以使用在搜索模式的中间,虽然这没什么用,例如下列例子中,查找以s开头,e结尾的产品:
输入:
SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE 's%e';
输出:
3.4 注意事项
使用百分号(%)通配符时需要注意:
- 注意百分号(%)通配符能匹配任意多的字符,哪怕是0个也是匹配的;
- 注意百分号(%)通配符使用时字符出现空格,尤其是尾空格,如 WHERE prod_name LIKE ‘%anvil’ 中如果查询的数据anvil后跟着一个空格,那么将不匹配它,因为在SQL中 anvil 与 anvil加一个空格,代表不一样的含义,你可以在尾部也增加一个通配符,或者通过后期学习的函数去处理数据;
- 要特别注意NULL值,虽然百分号(%)通配符可以匹配任意字符,但是NULL并不代表任何字符,使用通配符没有任何办法可以匹配它,只能通过 IS NULL 来查询;
4.下划线(_)通配符
另外一个有用的通配符就是下划线(_)。
下划线(_)的用途与%通配符一样,但下划线只能匹配一个字符,而不是多个。
输入:
SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE '_ ton anvil';
输出:
此WHERE子句的搜索模式给出了后面跟有文本的通配符。结果只显示匹配搜索模式的行,第一行中下划线匹配字符1,第二行中下划线匹配字符2;
. 5 ton anvil 产品没有匹配,因为搜索模式要求匹配俩个通配符,而不是一个。对比下列使用%通配符的结果,即可直观了解俩者的差别:
输入:
SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE '% ton anvil';
输出:
甚至去掉%后跟着的括号也是同样的结果;
与%不同的就是,_只能匹配一个字符,不能多也不能少;
5.使用通配符的技巧
虽然通配符很有用,但是使用通配符花费的时间要比前序介绍的查询方法都长,所以日常使用通配符时,要注意以下事项:
- 不要过度使用,能用其他方式达到同样效果的,优先选择其他方式;
- 在必须要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处,这样会导致搜索的效率是最慢的;
- 要注意通配符使用时放置的位置,位置错误会导致查询结果可能不是你想要的;
4.4 like通配符关键字过滤查询数据相关推荐
- Flask-SQLAlchemy 对数据库的过滤查询
Flask-SQLAlchemy 对数据库的过滤查询 使用 Flask-SQLAlchemy 从数据库中查询数据,可以指定查询的条件.数据库中的数据很多,用户需要的只是某一条数据或满足某个条件的数据. ...
- 股票F10关键字过滤工具
股票F10关键字过滤工具使用说明书 作者QQ:32078915 沪深A股目前有2500多只股票,股票F10资料天天都有更新,如果手动一只一只查看股票F10资料工作量 ...
- oracle 查的数据去重复数据,Oracle查询和过滤重复数据
对数据库某些意外情况,引起的重复数据,如何处理呢? ----------------查重复: select * from satisfaction_survey s where s.as_side = ...
- 【数据api】数据API企业关键字模糊查询
数据介绍 企业关键字模糊查询,通过关键字查询企业名称,获取企业唯一代码,用于企业工商登记信息查询. 查看详情 应用场景 1.企业征信评级:通过企业涉诉信息的多少及相关的裁判结果,为金融机构提供可靠的数 ...
- PHP访问关键字,php数据访问之查询关键字,php数据关键字_PHP教程
php数据访问之查询关键字,php数据关键字 本文实例为大家分享了php查询操作的实现代码,供大家参考,具体内容如下 一.一个关键字查询 主页面: 汽车查询页面 汽车查询页面请输入查询内容: 代号 汽 ...
- redis zset转set 反序列化失败_Redis只往zset有序集合添加不存在的数据:关键字索引查询构建+源码分析...
Redis的有序集合Sorted Set(zset),可以很方便地用来构建关键字索引表,可以很方便地实现支持超大规模并发的关键字组合条件查询. 比如有套博客系统,博客文章存放在 hash 类型 art ...
- oracle 查询关键字,Oracle 中的SELECT 关键字(查询、检索)
1. SELECT 关键字用法: 检索单个列:select 列名 from 表名: 例:select ename from emp; 检索多个列: select [列1,列2, ... ,列N] fr ...
- go mysql 查询数据_MySQL常用语句之查询数据-Go语言中文社区
简单查询: select [distinct] *| {字段名1,字段名2,字段名3, ...} from 表名 [where 条件表达式1] [group by 字段名 [having 条件表达式2 ...
- mysql数据表中取几列_MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用sel ...
最新文章
- Java修改文件夹下所有文件名
- android位运算简单讲解
- TensorFlow 安装protoc
- C#最基本的小说爬虫
- 数学 FZU 2074 Number of methods
- 安卓 java中改布局_android-选项卡布局中的地图视图throwing,java....
- linux添加Mib库,Linux SNMP中的管理信息库(MIB)学习
- Tomcat学习总结(10)——Tomcat多实例冗余部署
- xml矢量图:svg的viewBox和vml的coordsize决定的虚坐标系简说
- “上班那点儿事交流圈”发展计划
- 相机模型与标定(一)--相机标定概述
- raft Paxos
- 渗透测试常用端口利用总结
- SVN修改文件夹名称
- ddr3ddr4 lpddr4速率_LPDDR3内存就比DDR4差?是时候冷静一下了
- pdf文件转换成word转换器
- iqos烟弹哪个最好抽?我品尝了十一种电子烟烟弹后告诉你
- JAVA程序 通过IP地址 获取MAC地址
- zTree的使用教程
- beacon帧字段结构最全总结(一)——beacon基本结构