模糊查询用于将查询条件模糊,匹配符合模糊匹配条件的记录,跟于where字句。还是以前面的学生数学成绩表为例来讲解模糊查询。
我们有StudentScoreInfo表如下:
案例一:我们需要匹配所有王姓学生的记录
代码如下:
select * from StudentScoreInfo where StuName like '王%'
以上语句用于查询出StuName字段第一个字符为“王”后面紧跟0个或者多个任意字符的记录
代码执行结果如下:
案例二:我们需要查询出StuName字段第一个字符为“王”后面紧跟任意字符,然后最后一个字符为“风”的记录信息
select * from StudentScoreInfo where StuName like '王_风'
以上语句中“_”的是匹配任意一个字符
执行上面代码得到的结果集如下:
案例三:我们需要查询出StuName字段中有"''"(单引号)的数据
由于前面我们给的StudentScoreInfo表中的数据没有单引号,我们先加入一条带单引号的数据:
执行代码:insert into StudentScoreInfo (Id,StuName,mathScore) values(12,N'王大''侠',148)
然后我们执行查询语句进行查询:
代码:
select * from StudentScoreInfo where StuName like N'%''%'
执行结果如下:
结论:在SQL语言的字符串中,两个单引号代表一个单引号
案例四:查询出姓王或者姓李的学生的成绩信息
代码:
select * from StudentScoreInfo where StuName like N'[王李]%'
执行获得的结果集如下:
案例五:查询出成绩表中姓名带“[”的数据
首先我们需要加入一条带"["的数据
代码:insert into StudentScoreInfo (Id,StuName,mathScore) values(13,N'周[小',123)
代码:
select * from StudentScoreInfo where StuName like N'%[[]%'
执行得到的结果集如下:
总结:在SQL的模拟匹配字符串中"[]"代表一个字符位,里面框着的是这个字符位要匹配的字符。