substr, substring
功能
从一个字符串 (str
) 的指定位置(pos
) 开始截取指定长度 (len
) 的字符。
- 如果指定了
len
参数时,返回从位置pos
开始的长度为len
的子字符串。 - 如果没有指定
len
参数,返回从位置pos
开始的所有字符组成的字符串。
语法
VARCHAR substr(VARCHAR str, INT pos[, INT len]);
参数说明
-
str
: 必选,支持的数据类型为 VARCHAR。 -
pos
: 必选,支持的数据类型为 INT。-
pos
可以使用负值,在这种 情况下,从字符串str
末尾从右往左开始计算pos
个字符,见示例二。 -
如果
pos
的值为 0,返回一个空字符串。 -
如果指定的起始位置超出了字符串的位数范围,返回空字符串,见示例三。
注:字符串中第一个字符的位置为 1。
-
-
len
: 可选,支持的数据类型为 INT。如果不指定,默认返回pos
后的所有字符。如果要返回的字符字数超出了实际匹配的字符个数,返回所有匹配的字符,见示例四。
返回值说明
返回值的数据类型为 VARCHAR。
示例
-- 返回 "starrocks" 字符串从第三位字符 "a" 开始的所有字符,未指定字符长度。
mysql> select substr("starrocks",3);
+------------------------+
| substr('starrocks', 3) |
+------------------------+
| arrocks |
+------------------------+
1 row in set (0.00 sec)
-- 返回 "starrocks" 字符串从右往左数第二位字符 "k" 开始的所有字符,未指定字符长度。
mysql> select substring("starrocks",-2);
+----------------------------+
| substring('starrocks', -2) |
+----------------------------+
| ks |
+----------------------------+
1 row in set (0.00 sec)
-- 指定的位数 8 超过了 "apple" 字符串的总位数,返回空字符串。
MySQL > select substring("apple", 8, 2);
+--------------------------------+
| substring('apple', 8, 2) |
+--------------------------------+
| |
+--------------------------------+
-- 返回 "apple" 字符串中从第一位字符开始的 9 个字符。9 超过了匹配的字符个数,返回所有匹配的字符。
MySQL > select substring("apple", 1, 9);
+--------------------------+
| substring('apple', 1, 9) |
+--------------------------+
| apple |
+--------------------------+