(1)任务描述
本关任务:使用通配符 % 检索数据表中指定字段的数据;
(2)相关知识
为了完成本关任务,你需要掌握:如何使用通配符 % 模糊匹配数据内容。
(3)使用通配符%模糊匹配数据内容的后半部分
在所有通配符中,最常用的通配符要数 % 了。使用了 % 就意味着,你能从现有的数据中匹配到任意个数的字符(注意,可以是不止一个字符哟)。
语法规则为:
SELECT 字段名
FROM 表名
WHERE 字段名 LIKE '数据%';
举个例子
输入:
SELECT *
FROM Customers
WHERE cust_name LIKE 'Alice%'
输出:
检索过程为:
在这个例子里,我们使用了模糊匹配模式 Alice% ,运行后,数据库会检索出所有以 Alice 为开头的字符串来,无论 Alice 后有多长的字符串数据库都能检索出来。
Tips:
(4)使用通配符%模糊匹配数据内容的任意部分
如果,你想检索的内容既不在字符串的头部,也不在字符串的尾部,而是在它们的中间,你该如何检索呢?
举个例子
如果我们还按刚才的方法,看看我们能检索到什么?
输入:
SELECT *
FROM Customers
WHERE cust_email LIKE 'yahoo%'
输出:
啊哦!什么都没检索到!那是因为, yahoo% 模式严格匹配的是以 yahoo 开头的字符串。而大家可以看到,在我们的例子中,包含 yahoo 字符串的邮箱地址是以不同名字作为字符串开头的。
所以,要想匹配到五花八门的名字,我们需要把它们都变成通配符 % 。
输入:
SELECT *
FROM Customers
WHERE cust_email LIKE '%yahoo%'
输出:
检索过程为:
想象一下,如果你在 cust_email 中检索 a%m ,会得到什么样的结果?
下面轮到你们来试一试了。
(5)编程要求
我们已经为你建好了数据库与数据表,并添加了相应的数据内容。你只需补全右侧代码片段中 retrieving with wildcard % 下 Begin-End 区间的代码,检索表 Products 中所有带 toy 的产品的所有内容。
其中表 Products 的内容如下图所示:
测试说明
测试过程:
- 本关涉及到的测试文件是 step1_test.sh ,平台将运行用户补全的 step1.sql 文件,得到数据;
- 将得到的数据与答案比较,判断代码是否正确。
如果操作正确,你将得到如下的结果:
开始你的任务吧,祝你成功!
实验代码