获取某一个字符或子字符串的位置
instr(text,text,int,int)
描述:获取子字符串在目标字符串中的位置。如果没有获取到匹配项,则返回0。
- 第一个text:必选,目标字符串。
- 第二个text,必选,待匹配的子字符串。
- 第一个int,表示开始匹配起始位置,若未配置该参数,默认从头开始匹配。
- 第二个int,表示匹配的次数,若未配置该参数,默认是第一次出现的位置。
返回值类型:integer
示例:
获取子字符串“bcd”在主字符串“abcdabcdabcd”中,从第2个字符开始,第2次匹配的位置。
1 2 3 4 5 6 7 8 9 10 11 |
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
示例:
1 2 3 4 5 6 7 8 9 10 11 |
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
示例:
1 2 3 4 5 6 7 8 9 10 11 |
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
示例:
1 2 3 4 5 |
SELECT instr('corporate floor','or', 3); instr ------- 5 (1 row) |
1 2 3 4 5 |
SELECT instr('corporate floor','or',-3,2); instr ------- 2 (1 row) |
locate(substring,string[,position])
描述:从字符串string的position(缺省时为1)所指的位置开始查找并返回第一次出现子串substring位置的值。以字符为计算单位。当string中不存在substring时,返回0。
返回值类型:integer
示例:
1 2 3 4 5 |
SELECT locate('ball','football'); locate -------- 5 (1 row) |
1 2 3 4 5 |
SELECT locate('er','soccerplayer','6'); locate -------- 11 (1 row) |