MySQL SUBSTRING() 函数



MySQL 的SUBSTRING() 函数用于从给定字符串中提取子字符串。它接受三个参数:原始字符串、开始提取的位置以及要提取的子字符串的长度。

此函数在各种场景中很有用,例如提取姓名、地址或任何其他文本字符串的特定部分。

SUBSTRING() 函数等效于 MySQL 的SUBSTR() 函数。

语法

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

SUBSTRING(str,pos)
or,
SUBSTRING(str FROM pos);

参数

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

返回值

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

另一种语法

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

SUBSTRING(str,pos,len)
or,
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.htm
广告