
# instr
instr函数用于返回substr在str中最早出现的下标。
当参数中出现NULL时，返回NULL，当str中不存在substr时返回0，注意下标从1开始。
相似函数：[instr1](https://support.huaweicloud.com/sqlref-spark-dli/dli_spark_instr1.html)，instr1函数用于计算子串str2在字符串str1中的位置，instr1函数支持指定起始搜索位置和匹配次数。
#### 命令格式
```
instr(string <str>, string <substr>)
```
#### 参数说明
表1参数说明 
| 参数     | 是否必选 | 参数类型   | 说明                                                                                                                                            |
|:---|:---|:---|:---|
| str    | 是    | STRING | 待搜索的目标字符串。 如果输入为BIGINT、DOUBLE、DECIMAL或DATETIME类型，则会隐式转换为STRING类型后参与运算，其他类型会返回报错。 |
| substr | 是    | STRING | 待匹配的子串。 如果输入为BIGINT、DOUBLE、DECIMAL或DATETIME类型，则会隐式转换为STRING类型后参与运算，其他类型会返回报错。  |
   
#### 返回值说明
返回BIGINT类型的值。
![](https://support.huaweicloud.com/sqlref-spark-dli/public_sys-resources/note_3.0-zh-cn.png)
- 如果在str1中未找到str2，则返回0。
- 如果str2为空串，则总能匹配成功，例如select instr('abc','');会返回1。
- str1或str2值为NULL时，返回NULL。
 
#### 示例代码
- 计算字符b在字符串abc中的位置。命令示例如下。 返回2。
  ```
  select instr('abc', 'b');
  ```
  
- 任一输入参数为NULL。命令示例如下。 返回NULL。
  ```
  select instr('abc', null)
  ```
  
 
