模糊查询
上篇文章我们简单介绍了单表查询中的条件查询,里面介绍了一些精确查询和范围查询的基本方法,但当我们想要查询一些具有模糊条件的数据时,如:我们要在一张学生表中查询所有姓张的学生,或者我们想要查询含有某个字母或数字的数据时,使用上篇文章中介绍的几种方法就没有办法了,所以为了解决这个问题,今天我们来介绍一下使用LIKE
关键字进行模糊查询。
在介绍LIKE
关键字之前,先来了解两个比较常用的通配符%
、_
(后面会介绍MySQL提供的正则模式的模式匹配,先介绍两个最常用的):
"%" 代表的是任意长度的字符串,例如:
n%
就代表以n
开头的任意长度的字符串;"_" 代表的是任意单个字符,就是有几个
_
就代表有多少个字符,例如n__
就代表以n
开头的长度为3的字符串;总体来说,这两个的区别在于匹配的字符串的长度,
%
匹配多个字符,而_
仅匹配一个字符。
下面我们介绍几个使用模糊查询的例子:
1.查询姓名由5个字母构成的学生记录
SELECT *
FROM stu
WHERE sname LIKE '_____';
2.查询姓名由5个字母构成,并且第5个字母为“a”的学生记录
SELECT *
FROM stu
WHERE sname LIKE '____a';
3.查询姓名以“张”开头的学生记录
SELECT *
FROM stu
WHERE sname LIKE '张%';
4.查询姓名中第2个字为“一”的学生记录
SELECT *
FROM stu
WHERE sname LIKE '_一%';
5.查询姓名中包含“一”字的学生记录
SELECT *
FROM stu
WHERE sname LIKE '%一%';