MySQL的模糊查询

模糊查询的本质为:配合where和比较运算符,返回的都是一个布尔值

1. 常见的几个运算符

运算符

语法

描述

IS NULL

a is null

如果操作符为NULL,结果为真

IS NOT NULL

a is not null

如果操作符不为NULL,结果为真

BETWEEN

a between b and c

若a在b和c之间,则结果为真

LIKE

a like b

SQL匹配,如果a匹配b,则结果为真

IN

a in (a1,a2,a3)

假设a为a1,或者a2...中的其中某一个值,结果为真

2. Like结合 % _

1、%:代表0到任意个字符。比如,有三个姓刘的,两个姓王的,想查到所有姓刘的,不管他名字是三个字还是两

个字,就可以用'刘%'查。

-- 想查全部姓刘的
SELECT `StudentNo`,`StudentName` FROM `student` WHERE  `StudentName` LIKE '刘%'

效果:

 

mysql模糊子查询 mysql模糊查询原理_MySQL

mysql模糊子查询 mysql模糊查询原理_MySQL_02

2、_:代表一个字符。比如,有三个姓刘的,一个叫刘红,一个叫刘二红,一个叫刘三红。想查姓刘的2个字的名字,就可以用'刘'查;想查姓刘的3个字的名字,就可以用'刘'查;

-- 想查两个字姓周的
SELECT `StudentNo`,`StudentName` FROM `student` WHERE  `StudentName` LIKE '周_'

效果:

mysql模糊子查询 mysql模糊查询原理_mysql模糊子查询_03

-- 想查三个字姓周的
SELECT `StudentNo`,`StudentName` FROM `student` WHERE  `StudentName` LIKE '周__'

效果:

mysql模糊子查询 mysql模糊查询原理_运算符_04

3. in

与like关键字可以匹配%和_进行模糊查询不同;in是精确匹配,不可使用%和。

1、查家庭地址为北京海淀区、沈阳和平区的学生的信息。

SELECT * FROM `student` WHERE  `Address` IN ('北京海淀区','沈阳和平区')

效果:

 

mysql模糊子查询 mysql模糊查询原理_mysql模糊子查询_05

2、查学号为1001、1002、1003的三个人信息。

SELECT * FROM `student` WHERE  `StudentNo` IN (1001,1002,1003)

效果:

 

mysql模糊子查询 mysql模糊查询原理_mysql模糊子查询_06

4. is null

4.1 查询空信息(NULL),注意:NULL和空格打出来的空不一样!(建议使用4.2的方法)

SELECT * FROM `student` WHERE  `Address` IS NULL

效果:

mysql模糊子查询 mysql模糊查询原理_MySQL_07

 

mysql模糊子查询 mysql模糊查询原理_操作符_08

4.2 查询空信息(NULL),最好使用:同时判断NULL和空格的下面语法:

SELECT * FROM `student` WHERE  `Address` IS NULL OR `Address`=''

5. is not null

SELECT * FROM `student` WHERE  `BronDate` IS NOT NULL AND `BronDate`<>''

查询有出生日期的人

效果:

mysql模糊子查询 mysql模糊查询原理_操作符_09

mysql模糊子查询 mysql模糊查询原理_MySQL_10