第6课 用通配符进行过滤
1.LIKE操作符
假设我们有一张记录考勤记录的表,里面有一列为人名,现在我们想要筛选出姓杨的人的出勤情况,则使用前面学的知识就很难解决这一问题了。这时我们就需要使用通配符来进行数据过滤了。
要想在搜索子句中使用通配符,则必须使用LIKE操作符。
(1)百分号(%)通配符
%表示任意字符出现任意次数(包括0次)
比如说:要找出所有以Fish起头的产品,则:
SELECT prod_id,prod_name
FROM Products
WHERE prod_name LIKE 'Fish%';
通配符可以在搜索模式中的任意位置使用,并且可以使用多个通配符
如下:
SELECT prod_id,prod_name
FROM Products
WHERE prod_name LIKE '%bean bag%';
上面的代码可以查找出任何包含“bean bag”字符串的值,无论他出现在什么位置,或前后有什么字符。
通配符也可以出现在搜索模式的中间
搜索以F开头,以y结尾的产品;
SELECT prod_name
FROM Products
WHERE prod_name LIKE 'F%y';
(2)下划线(_)通配符
_只可以匹配单个字符
SELECT prod_id,prod_name
FROM Products
WHERE prod_name LIKE '_ inch teddy bear';
2.课后练习
(1)编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中包含toy一词的产品。
SELECT prod_name,prod_desc
FROM Products
WHERE prod_desc LIKE '%toy%';
(2)编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中未出现toy一词的产品。且按产品名称对结果进行排序。
SELECT prod_name,prod_desc
FROM Products
WHERE prod_desc NOT LIKE '%toy%'
ORDER BY prod_name;
(3)编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中同时出现toy和carrots的产品。
SELECT prod_name,prod_desc
FROM Products
WHERE prod_desc LIKE '%toy%' AND prod_desc LIKE '%carrots%';
(4)编写SQL语句,从Products表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中以先后顺序同时出现toy和carrots的产品。
SELECT prod_name,prod_desc
FROM Products
WHERE prod_desc LIKE '%toy%carrots%';