MySQL获取子串(SUBSTRING()和MID())
在 MySQL 中,获取字符串的子串可以使用 SUBSTRING() 函数或 MID() 函数。这两个函数在功能上是相同的,都可以从字符串中提取指定位置开始的特定长度的子串。
SUBSTRING(s,n,len) 带有 len 参数的格式,从字符串 s 返回一个长度与 len 字符相同的子字符串,起始于位置 n。也可能对 n 使用一个负值,如果是这种情况,则子字符串的位置起始于字符串结尾的 n 字符,即倒数第 n 个字符,而不是字符串的开头位置。
【实例】使用 SUBSTRING 函数获取指定位置处的子字符串,输入语句如下:
【实例】使用 MID() 函数获取指定位置处的子字符串,输入语句如下:
MySQL SUBSTRING()
SUBSTRING()函数的语法如下:SUBSTRING(s, n, len)
- s:要提取子串的原始字符串;
- n:开始提取的位置(从 1 开始计数);
- len:要提取的字符数。
SUBSTRING(s,n,len) 带有 len 参数的格式,从字符串 s 返回一个长度与 len 字符相同的子字符串,起始于位置 n。也可能对 n 使用一个负值,如果是这种情况,则子字符串的位置起始于字符串结尾的 n 字符,即倒数第 n 个字符,而不是字符串的开头位置。
【实例】使用 SUBSTRING 函数获取指定位置处的子字符串,输入语句如下:
MySQL> SELECT SUBSTRING('breakfast',5) AS col1, SUBSTRING('breakfast',5,3) AS col2,SUBSTRING('lunch', -3) AS col3,SUBSTRING('lunch', -5, 3) AS col4; +-------+-------+------+-------+ | col1 | col2 | col3 | col4 | +-------+-------+------+-------+ | kfast | kfa | nch | lun | +-------+-------+------+-------+
- SUBSTRING('breakfast',5) 返回从第 5 个位置开始到字符串结尾的子字符串,结果为“kfast”;
- SUBSTRING('breakfast',5,3) 返回从第 5 个位置开始长度为 3 的子字符串,结果为“kfa”;
- SUBSTRING('lunch', -3) 返回从结尾开始第 3 个位置到字符串结尾的子字符串,结果为“nch”;
- SUBSTRING('lunch', -5, 3) 返回从结尾开始第 5个 位置,即字符串开头起、长度为 3 的子字符串,结果为“lun”。
MySQL MID()
MID() 函数与 SUBSTRING() 的作用相同,语法格式是:MID(str, start, length)
- str:要提取子串的原始字符串。
- start:开始提取子串的位置(从 1 开始计数)。
- length:要提取的子串的长度。如果指定了 length,则 MID() 函数将从 start 位置开始提取指定长度的子串。如果 length 被省略或为 0,则 MID() 函数将从 start 位置开始提取直到字符串的末尾。
【实例】使用 MID() 函数获取指定位置处的子字符串,输入语句如下:
MySQL> SELECT MID('breakfast',5) as col1, MID('breakfast',5,3) as col2,MID('lunch', -3) as col3, MID('lunch', -5, 3) as col4; +-------+-------+------+------+ | col1 | col2 | col3 | col4 | +-------+-------+------+------+ | kfast | kfa | nch | lun | +-------+-------+------+------+可以看到 MID() 和 SUBSTRING() 的处理结果是一样的。