文档

SUBSTR

更新时间:

返回字符串strstart_position开始,长度为length的子串。

命令格式

string substr(string <str>, bigint <start_position>[, bigint <length>])

参数说明

  • str:必填。STRING类型。如果输入为BIGINT、DECIMAL、DOUBLE或DATETIME类型,则会隐式转换为STRING类型后参与运算。

  • start_position:必填。BIGINT类型,默认起始位置为1。

    • Hive兼容数据类型版本:当start_position为0时,与起始位置为1时相同。

    • 1.0和2.0数据类型版本:当start_position为0时,返回NULL。

  • length:可选。BIGINT类型,表示子串的长度值。值必须大于0。

    重要
    • 如果setproject odps.function.strictmode=false时:length值小于0时,会返回空白。

    • 如果setproject odps.function.strictmode=true时:length值小于0时,会返回错误。

返回值说明

返回STRING类型。返回规则如下:

  • str非STRING、BIGINT、DECIMAL、DOUBLE或DATETIME类型时,返回报错。

  • length非BIGINT类型或值小于等于0时,返回报错。

  • length被省略时,返回到str结尾的子串。

  • strstart_positionlength值为NULL时,返回NULL。

使用示例

  • 示例1:返回字符串abc从指定位置开始,指定长度的子串。命令示例如下。

    --返回bc。
    select substr('abc', 2);
    --返回b。
    select substr('abc', 2, 1);
    --返回bc。
    select substr('abc',-2 , 2);
  • 示例2:任一输入参数为NULL。命令示例如下。

    --返回NULL。
    select substr('abc', null);

相关函数

SUBSTR函数属于字符串函数,更多查找字符串、转换字符串格式的相关函数请参见字符串函数