第6课、用通配符进行过滤
LIKE:匹配文本
LIKE:针对未知值进行过滤。通配符搜索只能用于文本字段。
1)百分号%通配符 |
需求:找出所有以词 Fish 起头的产品
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'Fish%';
输出结果:
2)使用两个通配符 |
需求:找出所有包含“bean bag”的所有产品,不论它在该值中的之前或之后的位置。
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '%bean bag%';-- 找出所有以 F 起头、以 y 结尾的所有产品
SELECT prod_name
FROM Products
WHERE prod_name LIKE 'F%y';
输出结果:
LIKE %bean bag%
LIKE F%y
3)下划线通配符 |
需求:找出包含‘inch teddy berar’文本为结尾的字符,且该文本的之前有两个字符联结在一起。
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '__ inch teddy bear';
输出结果:
4)方括号通配符 |
需求:找出所有名字以 J 或 M 起头的联系人。
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%'
ORDER BY cust_contact;-- 需求:找出所有名字除了以 J 或 M 之外的任意字符起头的联系人。
-- 方法1:
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[^JM]%'
ORDER BY cust_contact;-- 方法2:
SELECT cust_contact
FROM Customers
WHERE NOT cust_contact LIKE '[JM]%'
ORDER BY cust_contact;
输出结果:
以 J 或 M 起头
除了以 J 或 M 起头之外
总结
LIKE:匹配文本
SELECT 列1, 列2
FROM 表
WHERE 列3 LIKE '内容+通配符';注意 NULL:
通配符不匹配列值为 NULL 的行。