MySQL SUBSTRING() 函数
MySQL SUBSTRING() 函数用于从给定字符串中提取子字符串。它接受三个参数:原始字符串、提取起始位置以及待提取子字符串的长度。
此函数在各种场景中都很有用,例如提取姓名、地址或任何其他文本字符串的特定部分。
SUBSTRING() 函数等同于 MySQL SUBSTR() 函数。
语法
以下是 MySQL SUBSTRING() 函数的语法 -
SUBSTRING(str,pos) 或, SUBSTRING(str FROM pos);
参数
此函数接受一个字符串值和一个起始位置作为参数。
返回值
此函数返回给定字符串中从指定位置开始的子字符串。
另一种语法
此函数还有第二种语法。在此函数中,除了字符串和位置值之外,它还接受另一个数值,表示结果子字符串的期望长度(例如 len)。
SUBSTRING(str,pos,len) 或, SUBSTRING(str FROM pos FOR len)
示例
在下面的示例中,我们从位置 11 开始提取子字符串 -
SELECT SUBSTRING('Welcome to Tutorialspoint', 11);
以下是上述代码的输出 -
| SUBSTRING('Welcome to Tutorialspoint', 11) |
|---|
| Tutorialspoint |
示例
以下示例演示了 SUBSTRING() 函数第二种语法的用法。这里,我们尝试获取字符串"Hello how are you Welcome to Tutorialspoint"从位置"15"开始的子字符串,结果长度为"15" -
SELECT SUBSTRING('Hello how are you Welcome to Tutorialspoint', 15, 15);
输出结果如下 -
| SUBSTRING('Hello how are you Welcome to Tutorialspoint', 15, 15) |
|---|
| you Welcome to |
示例
您也可以在两个参数之间使用 FROM 子句,而不是逗号"," -
SELECT SUBSTRING('Welcome to Tutorialspoint' FROM 11);
结果如下 -
| SUBSTRING('Welcome to Tutorialspoint' FROM 11) |
|---|
| Tutorialspoint |
示例
您也可以传递一个负值作为位置。如果这样做,生成的子字符串将从给定字符串末尾指定数量的字符之后开始 -
SELECT SUBSTRING('Welcome to Tutorialspoint' FROM -11);
以下是上述代码的输出 -
| SUBSTRING('Welcome to Tutorialspoint' FROM -11) |
|---|
| orialspoint |
示例
您也可以将字符串形式的数值作为此函数的第一个参数传递 -
SELECT SUBSTRING('67326532 7822 879282 92', 15);
输出结果如下 -
| SUBSTRING('67326532 7822 879282 92', 15) |
|---|
| 879282 92 |
示例
如果任何给定参数为 NULL,则函数返回 NULL -
SELECT SUBSTRING(NULL, 15);
生成的结果如下所示 -
| SUBSTRING(NULL, 15) |
|---|
| 0x |
示例
如果作为 pos 参数的值传递的参数为 0,则该函数返回空字符串 -
SELECT SUBSTRING('Hello how are you Welcome to Tutorialspoint', 0, 15);
以下是上述代码的输出 -
| SUBSTRING('Hello how are you Welcome to Tutorialspoint', 0, 15) |
|---|
示例
如果作为 len 参数值(第二种语法)传递的参数小于 1,则函数返回空字符串 -
SELECT SUBSTRING('Hello how are you Welcome to Tutorialspoint', 5, -1);
结果如下 -
| SUBSTRING('Hello how are you Welcome to Tutorialspoint', 5, -1) |
|---|
示例
让我们创建一个名为"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 |
以下查询返回 EMP 表中"LAST_NAME"列实体的子字符串 -
SELECT FIRST_NAME, LAST_NAME, AGE, SUBSTRING(LAST_NAME, 4) as result FROM EMP;
输出
执行上述代码后,我们得到以下输出 -
| FIRST_NAME | LAST_NAME | AGE | result |
|---|---|---|---|
| Krishna | Sharma | 19 | rma |
| Raj | Kandukuri | 20 | dukuri |
| Ramya | Ramapriya | 25 | apriya |
| Mac | Mohan | 26 | an |
示例
以下查询返回"LAST_NAME"列中从第二个字符开始包含接下来五个字符的子字符串 -
SELECT FIRST_NAME, LAST_NAME, AGE, SUBSTRING(LAST_NAME, 2, 5) as result FROM EMP;
输出
执行上述代码后,我们得到以下输出 -
| FIRST_NAME | LAST_NAME | AGE | result |
|---|---|---|---|
| Krishna | Sharma | 19 | harma |
| Raj | Kandukuri | 20 | anduk |
| Ramya | Ramapriya | 25 | amapr |
| Mac | Mohan | 26 | ohan |
mysql-substring-function.html