更新时间:2025-11-19 GMT+08:00
分享

获取某一个字符或子字符串的位置

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)

相关文档