SQL必知会(二)-SQL查询篇(5)-用通配符进行过滤

第6课、用通配符进行过滤

LIKE:匹配文本
LIKE:针对未知值进行过滤。通配符搜索只能用于文本字段。

1)百分号%通配符
%表示任何字符出现任意次数。

需求:找出所有以词 Fish 起头的产品

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'Fish%';

输出结果:

SQL必知会(二)-SQL查询篇(5)-用通配符进行过滤_第1张图片

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%

SQL必知会(二)-SQL查询篇(5)-用通配符进行过滤_第2张图片

LIKE F%y

SQL必知会(二)-SQL查询篇(5)-用通配符进行过滤_第3张图片

3)下划线通配符
只匹配单个字符。DB2 不支持下划线通配符。

需求:找出包含‘inch teddy berar’文本为结尾的字符,且该文本的之前有两个字符联结在一起。

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '__ inch teddy bear';

输出结果:

SQL必知会(二)-SQL查询篇(5)-用通配符进行过滤_第4张图片

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 起头

SQL必知会(二)-SQL查询篇(5)-用通配符进行过滤_第5张图片

除了以 J 或 M 起头之外

SQL必知会(二)-SQL查询篇(5)-用通配符进行过滤_第6张图片

总结

LIKE:匹配文本

SELECT 列1, 列2
FROM 表
WHERE 列3 LIKE '内容+通配符';

注意 NULL:
通配符不匹配列值为 NULL 的行。

你可能感兴趣的:(数据库,sql,数据库,java)