SUBSTRB
功能描述
截取目标字符串指定的部分。
语法格式
SUBSTRB (expr1, expr2 [, expr3 ])
参数说明
expr1:为待截取的字符串,char类型
expr2:为截取的开始位置(单位为字节);截取开始位置不管从哪边数,截取方向总是向右
- 为正数时,截取开始位置从左向右数;绝对值大于字符串长度时结果为null
- 为0时,截取整个字符串
- 为负数时,截取开始位置从右向左数;绝对值大于字符串长度时结果为null
expr3:指定截取字符的字节数;该值小于1时结果为null
两个参数时:expr2为integer类型 三个参数时:expr2与expr3为numeric类型
注意:
如果待截取的字符串为多字节字符,在不同字符集的库中执行结果可能有差别:例如中文在UTF8库中一个字符占3个字节,在GBK库中一个字符占2个字节。
函数返回类型
VARCHAR类型字符串
示例
sql
-- 示例 1 ~ 3 中,目标字符串为英文,一个字符占一个字节
-- 示例 1:从目标字符串左边数第二个字节处开始截取,向右截取至目标串结尾
SELECT SUBSTRB('abcdefg', 2);
EXPR1 |
------------------------------------------------------------------------------
bcdefg|
-- 示例 2:从目标字符串右边数第二个字节处开始截取,向右截取至目标串结尾
SELECT SUBSTRB('abcdefg', -2);
EXPR1 |
------------------------------------------------------------------------------
fg|
-- 示例 3:从目标字符串左边数第二个字节处开始截取,向右截取三个字节结束
SELECT SUBSTRB('abcdefg', 2, 3);
EXPR1 |
------------------------------------------------------------------------------
bcd|
-- 示例 4 ~ 5 中,目标字符串为中文,在UTF8库中一个字符占三个字节
-- 示例 4:从目标字符串第七个字节(此处为第三个字符)处开始截取,向右截取至目标串结尾
SELECT SUBSTRB('一二三四五六', 7);
EXPR1 |
------------------------------------------------------------------------------
三四五六|
-- 示例 5:从目标字符串第七个字节(此处为第三个字符)处开始截取,向右截取6个字节(此处为两个字符)
SELECT SUBSTRB('一二三四五六', 7, 6);
EXPR1 |
------------------------------------------------------------------------------
三四|