2026-10-23 07:29:02
SQL 中的 SUBSTRING 函数用于从字符串中截取子串,是处理字符串数据时最常用的函数之一。虽然不同数据库系统的语法略有差异,但核心功能一致。
SUBSTRING 的核心功能是从指定位置开始截取一定长度的字符。

MySQL / SQL Server:
SUBSTRING(str, start, length)Oracle:
SUBSTR(str, start, length)
SUBSTRING 常用于从编码类字段中提取特定部分信息,如身份证号中的出生年份、手机号中的运营商代码等。
示例1:提取身份证号中的出生年份假设有一个字段 id_card 存储18位身份证号码,提取第7到10位(出生年份):
SELECT SUBSTRING(id_card, 7, 4) AS birth_year FROM users;示例2:提取手机号前三位从手机号 13812345678 中提取前三位(运营商标识):
SELECT SUBSTRING(phone, 1, 3) AS provider_code FROM customers;这类操作适合数据清洗和格式转换,性能通常较好。
当需要根据不确定的位置截取内容时,可以结合 CHARINDEX(SQL Server)、INSTR(Oracle)、LOCATE(MySQL)等函数使用。
示例:从路径中提取文件名(SQL Server)DECLARE @path VARCHAR(100) = 'C:UsersTomDocumentstest.txt';SELECT SUBSTRING(@path, CHARINDEX('', @path, LEN(@path) - CHARINDEX('', REVERSE(@path))) + 1, LEN(@path)) AS file_name;这段代码动态找到最后一个反斜杠的位置,然后截取文件名。虽然复杂,但在处理日志、路径、URL等字段时非常有用。
使用 SUBSTRING 时需要注意以下几点:

SUBSTRING 是SQL中处理字符串的核心函数,掌握其用法可以高效完成各种字符串操作:

只要记住不同数据库的语法差异和关键注意事项,就能灵活运用SUBSTRING函数处理各种字符串需求。