MySQL 字段截取函数大全

2026-06-10 34 浏览 0 评论

MySQL 提供了 3 个最常用 的字段截取函数,满足所有截取场景,直接复制就能用:

1. 从指定位置截取(最通用)

SUBSTRING(str, start, length)
  • str :要截取的字段名
  • start :起始位置( 从 1 开始 ,正数从左数,负数从右数)
  • length :可选,截取长度(不写则截取到末尾)

常用示例

-- 1. 从第 2 位开始,截取到末尾
SELECT SUBSTRING(name, 2) FROM user;

-- 2. 从第 2 位开始,截取 3 个字符
SELECT SUBSTRING(name, 2, 3) FROM user;

-- 3. 从末尾倒数第 2 位开始截取
SELECT SUBSTRING(name, -2) FROM user;

2. 从左边截取固定长度

LEFT(str, length)
  • 专门从 字段开头 向左截取指定长度,语法最简单
-- 截取手机号前 3 位(138、139 等)
SELECT LEFT(phone, 3) FROM user;

-- 截取姓名前 2 个字
SELECT LEFT(name, 2) FROM user;

3. 从右边截取固定长度

RIGHT(str, length)
  • 专门从 字段末尾 向右截取指定长度
-- 截取手机号后 4 位
SELECT RIGHT(phone, 4) FROM user;

-- 截取邮箱后缀(如.com)
SELECT RIGHT(email, 3) FROM user;

4. 按分隔符截取(实用高频)

SUBSTRING_INDEX(str, delimiter, count)
  • 指定符号 分割字符串,取指定部分
  • delimiter :分隔符(如逗号、点、横杠)
  • count :正数取前 N 段,负数取后 N 段

示例

-- 1. 截取邮箱 @前面的账号(test@163.com → test)
SELECT SUBSTRING_INDEX(email, '@', 1) FROM user;

-- 2. 截取邮箱后缀(test@163.com → 163.com)
SELECT SUBSTRING_INDEX(email, '@', -1) FROM user;

-- 3. 截取日期的年份(2025-03-26 → 2025)
SELECT SUBSTRING_INDEX(create_time, '-', 1) FROM user;

快速选择指南

需求场景推荐函数
从左/右固定长度截取LEFT() / RIGHT()
任意位置开始截取SUBSTRING()
按符号分割截取SUBSTRING_INDEX()

总结

  1. 日常截取优先用 LEFT/RIGHT ,最简单直观
  2. 灵活截取用 SUBSTRING ,支持任意起始位置
  3. 按分隔符拆分用 SUBSTRING_INDEX ,处理邮箱、日期必备
  4. 所有函数 起始位置从 1 开始 ,不是 0

发布评论

发布评论前请先 登录
取消
0 评论
点赞
收藏

评论列表 0

暂无评论