当前位置: 首页 > news >正文

深入解析: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 等,都经常被面试官拿来考察。

http://www.jsqmd.com/news/3784/

相关文章:

  • 第四篇
  • PyTorch图神经网络(六)
  • Etcd详解:Kubernetes的大脑与记忆库 - 实践
  • 数智化术中导航:Holoscan + IGX的“边缘实时低时延”管线工艺分析(上)
  • Qwen多模态系列模型笔记—Qwen-VL
  • go 语法里变量前面增加、*区别
  • MFC List 控件详解:高效材料展示与管理
  • 历程回顾-(2024-2025)
  • CF Round 1053(2150 2151) 总结
  • 20250922_QQ_backdoor
  • 实用指南:【Java八股文】13-中间件面试篇
  • AT_agc012_d [AGC012D] Colorful Balls
  • 02、Python从入门到癫狂:函数与资料容器
  • 9/25
  • 关闭Edge浏览器页面的圆角效果
  • 搜索二维矩阵II-leetcode
  • Rust/C/C++ 混合构建 - Cmake集成Cargo编译动态库
  • LangChain:LLMs和ChatModels介绍、LangChain 集成大模型的本地部署与 API 调用实践、提示词prompt、输出解析器、链 - 实践
  • 卓伊凡的第一款独立游戏-unity安装运行设置以及熟悉整体unity游戏开发和unity editor【02】-优雅草卓伊凡
  • 学习敏捷课程PSM,自考证书分享
  • 详细介绍:基于卷积神经网络的人车识别技术:从原理突破到场景重构的深度探索
  • Rust/C/C++ 混合构建 - 用Bazel构建Rust与C
  • 9.24(补)
  • 9月25号
  • CCF CSP-J 2025_from_黄老师_d
  • 亚马逊与AWS如何通过漏洞赏金计划构建深度安全防御
  • GEO技术详解:从基础到实践的生成式引擎优化指南 - 指南
  • 详细介绍:锚定效应(解释+类型区分+商业及生活应用+如何避免)
  • sync.pool 面试题
  • 【JavaEE】SpringIoC与SpringDI - 详解