注册

详解MySQL的SUBSTR()函数:从字符串的指定位置开始提取指定数量的字符

SUBSTR()函数是MySQL中用于截取字符串的函数,其作用是从指定字符串中截取一定长度的子字符串,然后返回该子字符串。

语法:

SUBSTR(str, pos, len)

函数参数:

  • str:要截取子字符串的源字符串;
  • pos:截取子字符串的起始位置,位置索引从1开始计算;
  • len:截取子字符串的长度,可选参数。

函数返回值:

  • 返回截取的子字符串。

使用例子1:

我们可以使用SUBSTR()函数来截取一个字段中的前3个字符,并将其作为一个新的字段保存。

假设我们有一个学生成绩表,记录学生的成绩单号(包含学生学号、考试时间和顺序编号)以及考试成绩,如下所示:

score_no   score   exam_date
--------   -----   ----------
00101-1    87      2021-05-01
00101-2    91      2021-05-01
00101-3    82      2021-05-01
00102-1    95      2021-05-01
00102-2    89      2021-05-01
00102-3    93      2021-05-01

现在我们要将成绩单号中的前5个字符(即学号)截取出来,作为一个新的字段保存。可以使用如下SQL语句:

SELECT score_no, score, exam_date, SUBSTR(score_no, 1, 5) AS stu_no
FROM score_table;

执行以上SQL语句得到的结果如下:

score_no   score   exam_date   stu_no
--------   -----   ----------   ------
00101-1    87      2021-05-01   00101
00101-2    91      2021-05-01   00101
00101-3    82      2021-05-01   00101
00102-1    95      2021-05-01   00102
00102-2    89      2021-05-01   00102
00102-3    93      2021-05-01   00102

其中,新添加的字段stu_no即为成绩单号中的前5个字符(学号)。

使用例子2:

我们可以使用SUBSTR()函数来截取一个字符串中的子字符串,然后进行一些运算。

假设我们有一个包含一些数字的字符串,例如“1234”,我们想要截取其中的前两个数字("12"),然后将其转换成整型进行计算,可以使用如下SQL语句:

SELECT CAST(SUBSTR('1234', 1, 2) AS SIGNED) + 1 AS result;

执行以上SQL语句得到的结果为:

result
------
13

其中,CAST(SUBSTR('1234', 1, 2) AS SIGNED)用于将截取后的子字符串转换成整数类型,+1是对其进行加1操作,最终得到的结果为13。