Skip to content

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 | 
------------------------------------------------------------------------------
三四|