使用 LIKE 的模糊查询
字符串匹配的语法格式如下:
<表达式1> [NOT] LIKE <表达式2>
字符串匹配是一种模式匹配,使用运算符 LIKE 设置过滤条件,过滤条件使用通配符进行匹配运算,而不是判断是否相等进行比较。
相互间进行匹配运算的对象可以是 CHAR、VARCHAR、TEXT、DATETIME 等数据类型。运算返回的结果是 TRUE 或 FALSE。
利用通配符可以在不完全确定比较值的情形下创建一个比较特定数据的搜索模式,并置于关键字 LIKE 之后。可以在搜索模式的任意位置使用通配符,并且可以使用多个通配符。MySQL 支持的通配符有以下两种:
1) 百分号(%)
百分号是 MySQL 中常用的一种通配符,在过滤条件中,百分号可以表示任何字符串,并且该字符串可以出现任意次。
使用百分号通配符要注意以下几点:
- MySQL 默认是不区分大小写的,若要区分大小写,则需要更换字符集的校对规则。
- 百分号不匹配空值。
- 百分号可以代表搜索模式中给定位置的 0 个、1 个或多个字符。
- 尾空格可能会干扰通配符的匹配,一般可以在搜索模式的最后附加一个百分号。
2) 下划线(_)
下划线通配符和百分号通配符的用途一样,下画线只匹配单个字符,而不是多个字符,也不是 0 个字符。
注意:不要过度使用通配符,对通配符检索的处理一般会比其他检索方式花费更长的时间。
【实例 4】在 tb_students_info 表中,查找所有以“T”字母开头的学生姓名,输入的 SQL 的语句和执行结果如下所示。
mysql> SELECT name FROM tb_students_info
-> WHERE name LIKE 'T%';
+--------+
| name |
+--------+
| Thomas |
| Tom |
+--------+
2 rows in set (0.12 sec)
注意:在搜索匹配时,通配符“%”可以放在不同位置。
【实例 5】在 tb_students_info 表中,查找所有包含“e”字母的学生姓名,输入的 SQL 的语句和执行结果如下所示。
mysql> SELECT name FROM tb_students_info
-> WHERE name LIKE '%e%';
+-------+
| name |
+-------+
| Green |
| Henry |
| Jane |
+-------+
3 rows in set (0.00 sec)
由执行结果可以看出,该语句查询字符串中包含字母 e 的学生的姓名,只要名字中有字母 e,其前面或后面无论有多少个字符,都满足查询的条件。
【实例 6】在 tb_students_info 表中,查找所有以字母“y”结尾,且“y”前面只有 4 个字母的学生的姓名,输入的 SQL 语句和执行结果如下所示。
mysql> SELECT name FROM tb_students_info
-> WHERE name LIKE '____y';
+-------+
| name |
+-------+
| Henry |
+-------+
1 row in set (0.00 sec)
最新文章
- Unity_Shader(1)
- 2016年11月17日--SQL主、外键,子查询
- ado.net增删改查操作
- javascript提升复习
- 如何用 freebayes call SNP
- hdu 3032 Nim or not Nim?(搜索打SG表)
- MySQL中REGEXP正则表达式使用大全
- 初步掌握HBase
- 573 The Snail(蜗牛)
- Python基础类型
- Android上成功实现了蓝牙的一些Profile
- 前端基础之DOM和BOM
- postgresql----数据库表约束----NOT NULL,DEFAULT,CHECK
- train validation test
- US Customs bond DDP 船运
- poj1067-取石子游戏 (威佐夫博弈)
- WBS 工作分解结构
- 位运算(Bit Manipulation)在算法中的应用
- 【Leetcode】【Easy】Roman to Integer
- HAWQ技术解析(十八) —— 问题排查
热门文章
- POJ2516
- MongoDB快速入门指南与docker-compose快体验
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)
- 已解决[Authentication failed for token submission,Illegal hexadecimal charcter s at index 1]
- 由一次安全扫描引发的思考:如何保障 API 接口的安全性?
- [工具推荐]003.Tortoisegit使用教程
- 读Pyqt4教程,带你入门Pyqt4 _010
- 07 . Nginx常用模块及案例
- Alpha冲刺 —— 5.4
- JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序