Skip to content

SQL Mid() 函数

SUBSTRING() 函数是标准的 SQL 方法,用于从文本字段中提取字符串的一部分(即子字符串)。一些数据库系统,如 MySQL 和 MS Access,也提供 MID() 作为等效或类似的函数。

SELECT SUBSTRING(string_column, start_position, length) AS alias_name FROM table_name;

参数描述
string_column必需。包含要从中提取文本的列或字符串字面量。
start_position必需。一个整数,指定提取的起始位置。字符串中的第一个字符位置为 1。
length必需(在标准 SQL 中,尽管某些方言中是可选的)。要提取的字符数。如果在允许省略的方言中省略,通常会提取到字符串的末尾。

关于 MID() 的注意事项:

如果您使用的是 MySQL 或 MS Access,也可以使用 MID():

SELECT MID(column_name, start_position, length) AS alias_name FROM table_name;

为了在不同的 SQL 数据库系统之间保持可移植性,通常首选使用 SUBSTRING()。

我们将使用 Northwind 示例数据库。考虑 “Customers” 表:

CustomerIDCustomerNameCity
1Alfreds FutterkisteBerlin
2Ana Trujillo Emparedados y heladosMéxico D.F.
3Antonio Moreno TaqueríaMéxico D.F.
4Around the HornLondon
5Berglunds snabbköpLuleå
…

以下 SQL 语句从 “Customers” 表的 “City” 列中提取前四个字符:

SELECT SUBSTRING(City, 1, 4) AS ShortCity
FROM Customers;

使用 MID()(例如,用于 MySQL):

Section titled “使用 MID()(例如,用于 MySQL):”
SELECT MID(City, 1, 4) AS ShortCity
FROM Customers;

两个查询的结果(前几行):

Berl Méxi Méxi Lond Lule …

实际应用:

提取字符串的一部分在以下场景中很有用:

  • 生成缩写或代码。
  • 解析以固定格式存储在单个字符串中的数据(例如,从 YYYYMMDD 日期字符串中提取年份)。
  • 数据清洗和转换任务。

对于更高级的字符串操作,请探索您的特定 SQL 方言中提供的函数,如 LEFT()、RIGHT()、LENGTH()、CHARINDEX() 或 POSITION() 以及 REPLACE()。