SQL字符串截取函数——Left()、Right()、Substring()用法详解
SQL字符串截取函数——Left()、Right()、Substring()用法详解
1. LEFT()
函数:从字符串的左侧提取指定长度的子字符串。
LEFT(string, length)
string
:要操作的字符串。length
:从左侧提取的字符数量。
Demo🎈🎈🎈🎈:
SELECT LEFT('Hello 2025', 5) AS result;
-- 返回值: 'Hello'
Tips🎈🎈🎈🎈:
- 如果
length
超过字符串长度,返回整个字符串。
- 如果
length
为 0,则返回空字符串。
2. RIGHT()
函数:从字符串的右侧提取指定长度的子字符串。
RIGHT(string, length)
string
:要操作的字符串。length
:从右侧提取的字符数量。
Demo🎈🎈🎈🎈:
Tips🎈🎈🎈🎈:
- 如果
length
超过字符串长度,返回整个字符串。
- 如果
length
为 0,则返回空字符串。
3. SUBSTRING()
函数:从字符串的任意位置开始提取指定长度的子字符串。
SUBSTRING(string, start, length)
string
:要操作的字符串。start
:子字符串开始的位置(1 表示字符串的第一个字符)。length
:提取的字符数量。
Demo🎈🎈🎈🎈:
Tips🎈🎈🎈🎈:
- 如果
start
超过字符串长度,返回空字符串。
- 如果
start + length
超过字符串长度,提取到末尾。
- 在某些数据库中(如 SQL Server),
start
从 1 开始;在 MySQL 中,从 1 开始的默认行为相同。
函数 | 作用 | 典型场景 |
---|---|---|
LEFT() | 从左提取指定字符数 | 提取固定长度的前缀,如前 3 位日期年 '2023-12-01' -> 2023 |
RIGHT() | 从右提取指定字符数 | 提取固定长度的后缀,如文件扩展名 'file.txt' -> txt |
SUBSTRING() | 从任意位置提取指定字符数 | 提取动态范围的字符串,如获取身份证中间 6 位 |
Demo🎈🎈🎈🎈:
name | phone |
---|---|
John Doe | 1234567890 |
Alice Smith | 9876543210 |
Bob Johnson | 5556667777 |
- (1)提取姓名的前 4 个字符
SELECT name, LEFT(name, 4) AS short_name
FROM employees;
name | short_name |
---|---|
John Doe | John |
Alice Smith | Alic |
Bob Johnson | Bob |
- (2)提取电话号码的后 4 位
SELECT phone, RIGHT(phone, 4) AS last_digits
FROM employees;
phone | last_digits |
---|---|
1234567890 | 7890 |
9876543210 | 3210 |
5556667777 | 7777 |
- (3) 提取名字的第 2 到第 5 个字符
SELECT name, SUBSTRING(name, 2, 4) AS middle_name_part
FROM employees;
name | middle_name_part |
---|---|
John Doe | ohn |
Alice Smith | lice |
Bob Johnson | ob J |