# **SUBSTR**

SUBSTR函数表示从字符串中指定的起始位置截取的字符串或字符串表达式，用法与[MID函数](./MID.md)相同。

## 语法{#grammar}

SUBSTR(**str**, **start\_index**, \[**num**])

- **str**：指定的要截取的字符串。
- **start\_index**：非负整数，规定要提取的子串的第一个字符在str中的位置。合法取值范围是`1`到`len(str)`
  - start\_index>0：在字符串的指定位置开始
  - start\_index<0：在从字符串结尾的指定位置开始
  - start\_index=0：返回空字符串
  - start\_index>len(str)：返回空字符串
  - start\_index+num>len(str)：返回的子串一直到字符串的结尾
- **num**：可选的非负整数，返回子串的长度，缺省时返回字符表达式的值结束前的全部字符
  - 合法取值范围：`1`到`len(str)-start_index+1`
  - 不传递参数时：返回的子串会一直到字符串的结尾
  - num<1：返回空字符串

**示例地址：** [SUBSTR](https://demo.succbi.com/v5/bi/substr)

## 示例{#example}

1. `SUBSTR("abcde",1,null)`返回结果为空字符串
2. `SUBSTR("asd",0,2)` start\_index=0，返回结果为空字符串
3. `SUBSTR("asd",4,2)` start\_index超过字符串长度，返回结果为空字符串
4. `SUBSTR("abcdefg",-1,4)` start\_index<0，返回结果从字符串结尾的指定位置开始，返回`g`
5. `SUBSTR("210502198412020944",7,8)` 返回身份证中的出生日期，返回`19841202`
6. `SUBSTR("asd",1,4)` num超过字符串长度，返回字串一直到字符串的结尾，返回`asd`
7. `SUBSTR("asd",2,0)` num=0，返回结果为空字符串
8. `SUBSTR("asd",2,-1)` num<1，返回结果为空字符串
9. `SUBSTR("湖北省武汉市",5,3)` start\_index+num>len(str)，返回子字符串一直到结尾，返回`汉市`
