
# regexp_instr
regexp_instr函数用于计算字符串source从start_position开始，与pattern第occurrence次匹配的子串的起始或结束位置。
#### 命令格式
```
regexp_instr(string <source>, string <pattern>[,bigint <start_position>[, bigint <occurrence>[, bigint <return_option>]]])
```
#### 参数说明
表1参数说明 
| 参数             | 是否必选 | 参数类型   | 说明                                                                            |
|:---|:---|:---|:---|
| source         | 是    | STRING | 源字符串。                                                                         |
| pattern        | 是    | STRING | STRING类型常量或正则表达式。待匹配的模型。pattern为空串时返回报错。                                      |
| start_position | 否    | BIGINT | BIGINT类型常量。搜索的开始位置。不指定时默认值为1。                                                 |
| occurrence     | 否    | BIGINT | BIGINT类型常量。指定匹配次数，不指定时默认值为1，表示搜索第一次出现的位置。                                     |
| return_option  | 否    | BIGINT | BIGINT类型常量。指定返回的位置。值为0或1，不指定时默认值为0，其他类型或不允许的值会返回报错。0表示返回匹配的开始位置，1表示返回匹配的结束位置。 |
   
#### 返回值说明
返回BIGINT类型。return_option指定匹配的子串在source中的开始或结束位置。
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
- 如果pattern为空串，返回报错。
- start_position或occurrence非BIGINT类型或小于等于0时，返回报错。
- source、pattern、start_position、occurrence或return_option值为NULL时，返回NULL
 
#### 示例代码
返回6。
```
select regexp_instr('a1b2c3d4', '[0-9]', 3, 2);
```
返回NULL。
```
select regexp_instr('a1b2c3d4', null, 3, 2);
```
