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() 函数也允许使用负值作为位置。当使用负位置时,生成的子字符串将从给定字符串末尾指定数量的字符开始 -
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 |
示例
在以下查询中,我们从位置"2"检索"LAST_NAME"列中长度为"3"的值 -
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.html