1. 字符串截取的基础概念与应用场景
字符串截取是数据处理中最基础却最频繁使用的操作之一。在数据库查询、报表生成、数据清洗等场景中,我们经常需要从完整字符串中提取特定部分。比如从身份证号提取出生日期、从URL中获取域名、从日志中分离时间戳等。
SQL标准中的SUBSTRING函数(不同数据库可能有别名如SUBSTR)就是专门用于这种场景的利器。它的核心功能是从源字符串的指定位置开始,提取指定长度的子串。虽然语法简单,但实际应用中却有许多值得注意的细节和技巧。
我处理过的一个典型案例是电商订单号解析:订单号格式为"区域码(2位)+日期(8位)+序列号(5位)",需要分别提取这三个部分进行统计分析。这种需求如果没有字符串截取函数,要么需要导出到外部程序处理,要么要写复杂的正则表达式,而SUBSTRING只需几行SQL就能优雅解决。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. SUBSTRING函数的语法规范与实现差异
2.1 标准SQL语法
标准SQL中SUBSTRING函数的完整语法如下:
sql复制SUBSTRING(string FROM start [FOR length])
其中:
string:要截取的源字符串,可以是字段名或字符串字面量start:开始位置(整数),SQL标准中字符串索引从1开始length(可选):要截取的字符数,省略时截取到字符串末尾
示例:
sql复制-- 从第3个字符开始截取5个字符
SELECT SUBSTRING('HelloWorld' FROM 3 FOR 5);
-- 结果: 'lloWo'
-- 从第4个字符截取到末尾
SELECT SUBSTRING('Database' FROM 4);
-- 结果: 'abase'
2.2 主流数据库的实现差异
虽然功能相同,但各数据库的语法略有差异:
| 数据库 | 等效写法 | 特殊说明 |
|---|---|---|
| MySQL | SUBSTR(str,pos,len) |
