MySQL MID() 函数



MySQL 的 MID() 函数用于从给定字符串中提取子字符串。

它接受一个字符串值和一个指定字符串中位置(例如 pos)的数值作为参数,并返回从指定位置 pos 开始到字符串末尾的给定字符串的子字符串。

它类似于 MySQL 的 SUBSTRING() 函数,但不同之处在于它指定子字符串的起始位置和长度,而不是指定结束位置。

语法

以下是 MySQL MID() 函数的语法:

MID(str, pos)

参数

此函数以字符串值和起始位置作为参数。

返回值

此函数返回从给定字符串中指定位置开始的子字符串。

另一种语法

此函数还有第二种语法。在这种语法中,除了字符串和位置值之外,它还接受另一个表示所需结果子字符串长度(例如 len)的数值。

MID(str, pos, len)

示例

在以下示例中,我们从位置 11 开始提取到字符串“Welcome to Tutorialspoint”末尾的子字符串:

SELECT MID('Welcome to Tutorialspoint', 11);

以下是以上代码的输出:

MID('Welcome to Tutorialspoint', 11)
Tutorialspoint

示例

在这里,我们检索从位置 15 开始且长度为 15 的子字符串:

SELECT MID('Hello how are you welcome to Tutorialspoint', 15, 15);

获得的输出如下:

MID('Hello how are you welcome to Tutorialspoint', 15, 15)
you welcome to

示例

您还可以使用 FROM 子句代替逗号来指定 pos 和 len,如下例所示:

SELECT ('Welcome to Tutorialspoint' FROM 11);

我们得到如下输出:

MID('Welcome to Tutorialspoint' FROM 11)
Tutorialspoint

示例

MID() 函数还允许您对 pos 使用负值。当您使用负 pos 时,结果子字符串从给定字符串末尾的指定字符数之后开始:

SELECT MID('Welcome to Tutorialspoint' FROM -11);

以下是以上代码的输出:

MID('Welcome to Tutorialspoint' FROM -11)
orialspoint

示例

您还可以将数值以字符串的形式作为此函数的第一个参数传递:

SELECT MID('67326532 7822 879282 92', 15);

产生的结果如下所示:

MID('67326532 7822 879282 92', 15)
879282 92

示例

如果传递给函数的任何参数为 NULL,则函数返回 NULL:

SELECT MID(NULL, 15);

我们得到如下所示的输出:

MID(NULL, 15)
0x

示例

当您将“0”作为 pos 参数传递时,函数返回空字符串:

SELECT MID('Hello how are you welcome to Tutorialspoint', 0, 15);

我们得到如下输出:

MID('Hello how are you welcome to Tutorialspoint', 0, 15)

示例

如果作为 len 参数(第二种语法)的值传递的参数小于 1,则此函数返回空字符串:

SELECT MID('Hello how are you welcome to Tutorialspoint', 5, -1);

以下是以上代码的输出:

MID('Hello how are you welcome to Tutorialspoint', 5, -1)
orialspoint

示例

您还可以使用 MID() 函数获取表中列值的子字符串。

让我们创建一个名为“EMP”的表,并使用 CREATE 和 INSERT 语句向其中插入记录,如下所示:

CREATE TABLE EMP(
   FIRST_NAME  CHAR(20) NOT NULL,
   LAST_NAME  CHAR(20),
   AGE INT,
   INCOME FLOAT
);

现在,让我们使用 INSERT 语句向其中插入记录:

INSERT INTO EMP VALUES 
('Krishna', 'Sharma', 19, 2000),
('Raj', 'Kandukuri', 20, 7000),
('Ramya', 'Ramapriya', 25, 5000),
('Mac', 'Mohan', 26, 2000);

获得的 EMP 如下:

FIRST_NAME LAST_NAME AGE INCOME
Krishna Sharma 19 2000
Raj Kandukuri 20 7000
Ramya Ramapriya 25 5000
Mac Mohan 26 2000

以下查询使用 MID() 函数从“LAST_NAME”列中检索子字符串:

SELECT FIRST_NAME, LAST_NAME, AGE, INCOME,  MID(LAST_NAME, 4) 
FROM EMP;

输出

执行以上代码后,我们得到以下输出:

FIRST_NAME LAST_NAME AGE INCOME MID(LAST_NAME, 4)
Krishna Sharma 19 2000 rma
Raj Kandukuri 20 7000 dukuri
Ramya Ramapriya 25 5000 apriya
Mac Mohan 26 2000 an

示例

在以下查询中,我们从 pos“2”开始,长度为“3”地检索“LAST_NAME”列中的值:

SELECT FIRST_NAME, LAST_NAME, AGE, INCOME, MID(LAST_NAME, 2, 3) 
FROM EMP;

输出

获得的结果如下:

FIRST_NAME LAST_NAME AGE INCOME MID(LAST_NAME, 2, 3)
Krishna Sharma 19 2000 har
Raj Kandukuri 20 7000 and
Ramya Ramapriya 25 5000 ama
Mac Mohan 26 2000 oha
mysql-mid-function.htm
广告