SQL 课程 3:带约束的查询(第 2 部分)

WHERE 不只用于数字,也能筛选文字字段。文本条件常见于客户分群:例如只关注医疗行业客户、某个办公地的客户,或按客户名称前缀查找一批待联系名单。

精确匹配可以使用 =;LIKE 搭配通配符 % 可以匹配不确定长度的文字;IN 则能同时指定多个候选值。文本内容需要用单引号包起来。

本课继续使用 accounts 客户档案表。请根据行业、办公地和客户名称完成筛选,体会不同文本条件的适用场景。

使用文本条件筛选记录
WHERE 字段 = '精确值'
WHERE 字段 LIKE '前缀%'
WHERE 字段 IN ('值1', '值2')

文字条件与数值条件,最大的不同是什么?

数字可以直接写 500;文字要用单引号包起来。例如 sector = 'medical' 中,medical 是数据里存储的原始行业值。页面会把它显示为“医疗”,但写 SQL 时仍要使用 medical。

精确匹配很适合行业、国家、状态等标准化字段;如果你只记得客户名称的一部分,LIKE 会更方便。

找出医疗行业客户
SELECT account, sector
FROM accounts
WHERE sector = 'medical';

文本筛选运算符速查表

先从最准确的 = 开始;只有当你确实需要模糊匹配时,再使用 LIKE。这样结果更可控,也更不容易误选客户。

常用文本条件

写法含义CRM 示例
= / !=(或 <>)精确等于 / 不等于某段文字office_location = 'Kenya'
LIKE 'B%'以 B 开头;% 代表任意长度文字account LIKE 'B%'
LIKE '%tech%'名称中包含 techaccount LIKE '%tech%'
LIKE 'A_'_ 代表恰好一个字符account LIKE 'A_'
IN ('值1', '值2')属于给定文字列表之一sector IN ('finance', 'software')
NOT IN ('值1', '值2')不属于给定文字列表sector NOT IN ('retail', 'medical')

小提醒:% 和 _ 只在 LIKE 中有特殊含义;在 = 条件中,它们只是普通字符。

把筛选条件写成业务语言

写 SQL 前,先用一句话说清目标:例如“找出金融和软件行业的客户”。再把其中的“和”翻译为 IN 列表,最后决定要返回哪些字段。这种先业务、后 SQL 的习惯,会让查询更不容易写偏。

同时关注两个行业
SELECT account, sector, office_location
FROM accounts
WHERE sector IN ('finance', 'software');

练习

每次只需完成一个业务筛选任务。等价的 SQL 写法也可以通过判定。

表格:accounts(客户档案)

查询返回 0 行。

显示第 00
1 / 1
正在准备浏览器内 SQL 数据库…