在MySQL中,SUBSTRING函数用于从字符串中提取指定长度的子串。这个函数非常实用,尤其是在处理文本字段、截取部分数据或进行字符串分析时。
基本语法
SUBSTRING(str, pos) 或 SUBSTRING(str FROM pos)
SUBSTRING(str, pos, len) 或 SUBSTRING(str FROM pos FOR len)
从指定位置提取子串
如果只提供起始位置,函数会返回从该位置到字符串末尾的所有字符。
例如:
SELECT SUBSTRING('Hello World', 7); -- 返回 'World'这里从第7个字符开始提取,结果是“World”。
提取指定长度的子串
提供起始位置和长度参数,可以精确控制返回的字符数量。
例如:
SELECT SUBSTRING('Hello World', 1, 5); -- 返回 'Hello'从第1个字符开始,提取5个字符,得到“Hello”。
支持负数位置:
SELECT SUBSTRING('Hello World', -5, 5); -- 返回 'World'负数表示从字符串末尾倒数计算位置,-5 表示倒数第5个字符。
在实际查询中的应用
常用于处理表中的文本字段。比如有一个用户邮箱字段,想提取域名部分:
SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;LOCATE函数找到@符号的位置,+1跳过@,然后提取剩余部分作为域名。
另一个例子:提取日期字符串中的年份
SELECT SUBSTRING('2024-08-20', 1, 4); -- 返回 '2024'基本上就这些用法,掌握好起始位置和长度控制,就能灵活提取所需内容。
