欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL模糊查询

程序员文章站 2024-03-01 16:43:58
...

在WHERE子句中,当我们不知道准确的查询条件时,可以使用LIKE关键字和通配符组成比较特定数据的搜索模式对文本字段进行模糊查询。
通配符是用来匹配值的一部分的特殊字符,同时使用LIKE关键字在WHERE子句中构成查询条件。通配符模糊查询只能用于文本字段(字符串),非文本数据类型字段不能使用通配符进行模糊查询。
语法

select <字段名列表> from 表名 where 字段名 like <

百分号(%)

在模糊查询中,%表示任何字符出现任意次数。
示例1:查询姓名以a开头的员工信息

mysql> select * from emp where ename like 'a%';
+-------+-------+------------+------+------------+------+------+--------+
| empno | ename | job        | mgr  | hiredate   | sal  | comm | deptno |
+-------+-------+------------+------+------------+------+------+--------+
|  7499 | allen | salesman   | 7698 | 1981-02-20 | 1600 |  300 |     30 |
|  7876 | adams | clerk      | 7788 | 1987-05-23 | 1100 |    0 |     20 |
+-------+-------+------------+------+------------+------+------+--------+

示例2:查询姓名中包含a的员工信息

mysql> select * from emp where ename like '%a%';
+-------+--------+------------+------+------------+------+------+--------+
| empno | ename  | job        | mgr  | hiredate   | sal  | comm | deptno |
+-------+--------+------------+------+------------+------+------+--------+
|  7499 | allen  | salesman   | 7698 | 1981-02-20 | 1600 |  300 |     30 |
|  7521 | ward   | salesman   | 7698 | 1981-02-22 | 1250 |  500 |     30 |
|  7654 | martin | salesman   | 7698 | 1981-09-28 | 1250 | 1400 |     30 |
|  7698 | blake  | manager    | 7839 | 1981-05-01 | 2850 |    0 |     30 |
|  7782 | clark  | manager    | 7839 | 1981-06-09 | 2450 |    0 |     10 |
|  7876 | adams  | clerk      | 7788 | 1987-05-23 | 1100 |    0 |     20 |
|  7900 | james  | clerk      | 7698 | 1981-12-03 |  950 |    0 |     30 |
+-------+--------+------------+------+------------+------+------+--------+

下划线(_)通配符

在模糊匹配中,_只匹配单个字符。
示例:查询姓名中第二个字符为a的员工信息

mysql> select * from emp where ename like '_a%';
+-------+--------+------------+------+------------+------+------+--------+
| empno | ename  | job        | mgr  | hiredate   | sal  | comm | deptno |
+-------+--------+------------+------+------------+------+------+--------+
|  7521 | ward   | salesman   | 7698 | 1981-02-22 | 1250 |  500 |     30 |
|  7654 | martin | salesman   | 7698 | 1981-09-28 | 1250 | 1400 |     30 |
|  7900 | james  | clerk      | 7698 | 1981-12-03 |  950 |    0 |     30 |
+-------+--------+------------+------+------------+------+------+--------+

使用通配符的技巧

使用通配符进行模糊查询一般要比其他条件查询耗费更长的处理时间,所以我们要注意使用通配符的方法。

  • 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
  • 在确实需要使用通配符时,也尽量不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。
  • 注意通配符的位置。如果放错地方,可能不会返回想要的数据。