S
面向产品经理的交互式SQL教学
通过真实业务数据,练习产品分析 SQL。
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%' | 名称中包含 tech | account 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–0 行
第 1 / 1 页
正在准备浏览器内 SQL 数据库…