# 获取某一个字符或子字符串的位置
#### instr(text,text,int,int)
描述：获取子字符串在目标字符串中的位置。如果没有获取到匹配项，则返回0。
- 第一个text：必选，目标字符串。
- 第二个text，必选，待匹配的子字符串。
- 第一个int，表示开始匹配起始位置，若未配置该参数，默认从头开始匹配。
- 第二个int，表示匹配的次数，若未配置该参数，默认是第一次出现的位置。
返回值类型：integer
示例：
获取子字符串"bcd"在主字符串"abcdabcdabcd"中，从第2个字符开始，第2次匹配的位置。
```
SELECT instr( 'abcdabcdabcd', 'bcd', 2, 2 );
 instr
-------
     6
(1 row)
SELECT instr( 'abcdabcdabcd', 'lmk', 2);
 instr
-------
     0
(1 row)
```
#### position(substring in string)
描述：返回指定子字符串在字符串中的位置。若string中没有substring，则返回0。
返回值类型：integer
示例：
```
SELECT position('ing' in 'string');
 position
----------
        4
(1 row)
SELECT position('ing' in 'strin');
 position
----------
       0
(1 row)
```
#### strpos(string, substring)
描述：获取指定的子字符串（substring）在目标字符串（string）中首次出现的位置。子字符串不存在于目标字符串中时，返回0。
返回值类型：integer
示例：
```
SELECT strpos('source', 'rc');
 strpos
--------
      4
(1 row)
SELECT strpos('source', 'data');
 strpos
--------
      0
(1 row)
```
#### instr(string,substring\[,position,occurrence\])
描述：从字符串string的position（缺省时为1）所指的位置开始查找并返回第occurrence（缺省时为1）次出现子串substring的位置的值。
- 当position为0时，返回0。
- 当position为负数时，从字符串倒数第n个字符往前逆向搜索。n为position的绝对值。
本函数以字符为计算单位，如一个汉字为一个字符。
返回值类型：integer
示例：
```
SELECT instr('corporate floor','or', 3);
 instr 
-------
     5
(1 row)
```
```
SELECT instr('corporate floor','or',-3,2);
 instr 
-------
     2
(1 row)
```
#### locate(substring,string\[,position\])
描述：从字符串string的position（缺省时为1）所指的位置开始查找并返回第一次出现子串substring位置的值。以字符为计算单位。当string中不存在substring时，返回0。
返回值类型：integer
示例：
```
SELECT locate('ball','football');
 locate 
--------
     5
(1 row)
```
```
SELECT locate('er','soccerplayer','6');
 locate 
--------
    11 
(1 row)
```
