当前位置: 首页 > 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.dtcms.com/a/393851.html

相关文章:

  • 法律文档智能分析系统:NLP+法律知识库的技术实现方案
  • Flutter_学习记录_实现商品详情页Tab点击跳转对应锚点的demo
  • 【大语言模型】作为可微分搜索索引的Transformer记忆体
  • NLP---自然语言处理
  • 多条件查询中的日期交互指南:从前端到后端的顺畅协作
  • 系分论文《论人工智能在网络安全态势感知系统中的分析与设计》
  • 【Kubernetes】(六)Service
  • Coze源码分析-资源库-删除工作流-后端源码-核心技术与总结
  • vue Ai 流试回答实现打字效果
  • 【架构】面向对象六大设计原则
  • ✅ 基于OpenCV与HyperLPR的车牌识别系统 PyQt5可视化 支持多种输入 深度学习毕业设计
  • 深度学习在计算机视觉中的最新进展:范式转变与前沿探索
  • 本地免费使用网页表格控件websheet
  • Spring Boot集成MQTT与单片机通信
  • 【Axios 】web异步请求
  • FreeRTOS实战指南 — 6 临界段保护
  • 关于CFS队列pick_next_task_fair选取下一个任务的分析
  • 【算法笔记】链表相关的题目
  • Netty从0到1系列之Recycler对象池技术【3】
  • 网页开发入门:CSS与JS基础及BS/CS架构解析
  • css单位换算及适配
  • Java制作双脑同步 Hemi-Sync 音频
  • webrtc弱网-ProbeBitrateEstimator类源码分析与算法原理
  • 在OpenHarmony上适配图形显示【4】——rk3568_4.0r_mesa3d适配
  • 嵌入式(3)——RTC实时时钟
  • 内核模块组成和裁剪参考表
  • 140-understanding_the_armv8.x_and_armv9.x_extensions_guide
  • 【序列晋升】40 Spring Data R2DBC 轻量异步架构下的数据访问最佳实践
  • TGRS | 视觉语言模型 | 语言感知领域泛化实现高光谱跨场景分类, 代码开源!
  • Oracle / MySQL / MariaDB / SQL Server 常用连接与基础查询(Linux操作系统上)