知点(一):like的运用
如果LIKE后面的匹配串中不含通配符,则可用 = 运算符取代LIKE谓词,用!=或<>运算符取代not like谓词。
例15:查询所有姓刘的学生的姓名、学号和性别
select sname,sno ,ssex
from student
where sname like '刘%'
例16:查询姓“欧阳”且全名为三个汉字的学生的姓名
select sname
from student
where sname like '殴阳_ _'
注意:一个汉字要占两个字符合位置,所以匹配串欧阳后面需要跟两个_
例17:查询名字中第2个字为“阳”字的学生的姓名和学号。
select sname,sno
from student
where sname like '_ _阳%'
例18:查询所有不姓刘的学生姓名
select sname,sno
from student
where sname not like '刘%'
知点(二):换码字符的运用
如果要查询的字符串本身就含有%或 _ _,这时就要使用ESCAPE'<换码字符>'短语对通配符进行转义了。
例19 :查询DB _Design课程的课程号和学分。
select cno,credit
from course
where cname like 'DB\_Design'ESCAPE'\'
ESCAPE ‘\' 短语表示 \ 为换码字符,这样匹配串中紧跟在 \ 后面的字符 _ 不再具有通配行的含义,转义为普通的" _"字符。
例20 查询以“DB_“开头,且倒数第3个字符为 i 的课程的详细情况。
select *
from course
where cname like 'DB\_%i_ _'ESCAPE'\'
这里的匹配串“DB\_%i_ _“。第一个 _ 前面有换码字符 \ ,所以它被转义为普通的 _ 字符。而 % 后的第2个和第3个_ 前面均没有换码字符 \ ,所以它们作为通配符。