SQL 字符串函数高频考点:LIKE 和 SUBSTRING 的区别
在 SQL 面试和日常开发中,字符串处理是非常常见的考点。特别是 LIKE 和 SUBSTRING,两者看似都能“截取/匹配字符串”,但本质作用完全不同。很多同学在面试时容易混淆,今天我们就来彻底搞清楚它们的区别与用法。
1. LIKE 的作用
LIKE 是一种 模式匹配(Pattern Matching)操作,用来判断某个字符串是否符合特定规则。
常用的通配符有:
● %:匹配任意长度的字符(包括空字符串)。
● _:匹配单个字符。
示例:
-- 查找姓名以 'A' 开头的用户
SELECT * FROM users
WHERE name LIKE 'A%';
-- 查找姓名包含 'Tom' 的用户
SELECT * FROM users
WHERE name LIKE '%Tom%';
-- 查找姓名为三位,且第二位是 'o' 的用户
SELECT * FROM users
WHERE name LIKE '_o%';
📌 总结:LIKE 只判断字符串是否满足某种模式,不会改变原始字符串。
2. SUBSTRING 的作用
SUBSTRING 是一种 截取函数,用于从字符串中提取指定位置的子串。
语法:
SUBSTRING(string, start, length)
● string:要截取的字符串。
● start:起始位置(从 1 开始)。
● length:可选,表示截取的长度。
示例:
-- 截取 'HelloWorld' 的前 5 个字符
SELECT SUBSTRING('HelloWorld', 1, 5);
-- 结果:Hello
-- 从第 6 位开始截取后面的所有字符
SELECT SUBSTRING('HelloWorld', 6);
-- 结果:World
📌 总结:SUBSTRING 是直接返回子串,而不是匹配。
3. LIKE 和 SUBSTRING 的区别
很多同学会把 LIKE 和 SUBSTRING 混为一谈,面试时记住下面三点就能秒答:
1. 功能不同
● LIKE:用来 匹配字符串模式,返回布尔判断(是否符合条件)。
● SUBSTRING:用来 截取子串,返回实际的字符串。
2. 结果不同
● LIKE 的结果是 TRUE / FALSE(匹配成功与否)。
● SUBSTRING 的结果是 具体的子字符串。
3. 应用场景不同
● LIKE 常用于 模糊查询(如搜索)。
● SUBSTRING 常用于 字符串处理(如提取日期中的年、月)。
4. 面试高频问题
Q1:什么时候用 LIKE,什么时候用 SUBSTRING?
如果你只想判断字符串是否包含某个模式,用 LIKE。
如果你需要拿到字符串的某一部分,用 SUBSTRING。
Q2:能不能用 SUBSTRING 实现 LIKE 的功能?
严格来说不行。SUBSTRING 只能截取,而 LIKE 提供了通配符匹配,是 查询条件,不是字符串处理函数。
Q3:性能上有什么差异?
LIKE '%xxx' 在没有索引优化时可能会导致全表扫描。
SUBSTRING 性能开销很小,本质是字符串截取操作。
5. 总结
LIKE:字符串模式匹配,常用于模糊查询,返回布尔值。
SUBSTRING:字符串截取函数,常用于数据清洗或拆分,返回子串。
面试回答要点:一个用于条件判断,一个用于字符串处理,两者不能互换。
👉 如果你正在准备 SQL 面试,可以把这一类“高频考点函数”整理成一套 速查笔记,比如 COUNT vs COUNT(列)、LIKE vs IN、IS NULL vs = NULL 等,都经常被面试官拿来考察。