FIND_IN_SET
语法:
FIND_IN_SET(sub,src)
功能:返回sub在src中的索引位置。
sub为元素字符串。src为集合字符串,元素之间用逗号隔开。
入参是可转成字符串的表达式;返回值是INTEGER。
说明:
当前不支持对clob和blob数据类型的处理。
示例:
返回字符串“b”在字符串“a,b,c,d”中的索引位置。
SELECT FIND_IN_SET('b','a,b,c,d'); FIND_IN_SET('B','A,B,C,D') -------------------------- 2 1 rows fetched.
INSTR
语法:
INSTR(str1,str2[,pos[,n]])
功能:字符串查找函数。返回要查找的字符串在源字符串中的位置,按字符计算位置。
str1是源字符串,str2是要查找的字符串,pos是索引位置,代表从str1的哪个位置开始查找字符串str2,该参数是可选参数,取值为非零整数,如果省略则默认为1;n代表要查找第几次出现的str2,该参数也是可选参数,取值为正整数,如果省略则默认为1。
在源字符串str1中,INSTR函数按照从左向右(pos为正整数时)或从右向左(pos为负整数时)的顺序,从第|pos|个字符位置开始搜索字符串str2,直到str2第n次出现时,返回str2首字符在源字符串str1中所在的字符位置,如果没有搜索到第n次出现的str2则返回0。无论搜索顺序是从左向右还是从右向左,计算要查找的字符串在源字符串中的位置都是从左向右计算。
入参str1、str2均为可转成STRING的表达式,入参pos、n均为可转成INT的表达式;返回值是INT。
示例:
从第3个字符开始,从左向右在字符串“oracleor”中搜索字符串“or”第2次出现的位置,因搜索不到而返回0。
SELECT INSTR('oracleor','or', 3, 2) POSITION FROM DUAL; POSITION ------------ 0 1 rows fetched.
从倒数第1个字符开始,从右向左在字符串“oracleor”中搜索字符串“or”第2次出现的位置。
SELECT INSTR('oracleor','or', -1, 2) POSITION FROM DUAL; POSITION ------------ 1 1 rows fetched.
INSTRB
语法:
INSTRB(str1,str2[,pos[,n]])
功能:字符串查找函数。返回要查找的字符串在源字符串中的位置,按字节计算位置。
str1是源字符串,要在此字符串中查找。
str2是要在str1中查找的字符串。
入参str1、str2均为可转成STRING的表达式,入参pos、n均为可转成INT的表达式;返回值是INT。
pos是索引位置,代表从str1的哪个位置开始查找字符串str2,该参数是可选参数,取值为非零整数,如果省略则默认为1。
n代表要查找第几次出现的str2,该参数也是可选参数,取值为正整数,如果省略则默认为1。
说明:
在源字符串str1中,INSTRB函数按照从左向右(pos为正整数时)或从右向左(pos为负整数时)的顺序,从第|pos|个字符位置开始搜索字符串str2,直到str2第n次出现时,返回str2首字符在源字符串str1中所在的字符位置,如果没有搜索到第n次出现的str2则返回0。
无论搜索顺序是从左向右还是从右向左,计算要查找的字符串在源字符串中的位置都是从左向右计算。
示例:
从第3个字节开始,从左向右在字符串oracleor中搜索字符串or第1次出现的位置,第一个搜索指定参数n的值,第二个搜索不指定参数n的值。
SELECT INSTRB('oracleor','or', 3, 1) POSITION_WITH_n, INSTRB('oracleor','or', 3) POSITION_WITHOUT_n FROM DUAL; POSITION_WITH_N POSITION_WITHOUT_N --------------- ------------------ 7 7 1 rows fetched.
从第1个字节开始,从左向右分别按字节和字符搜索字符串“A”在字符串“我A”中第1次出现的位置。
SELECT INSTRB('我A','A',1,1)AS BYTE_POSITION,INSTR('我A','A',1,1) AS WORD_POSITION FROM DUAL; BYTE_POSITION WORD_POSITION ------------- ------------- 4 2 1 rows fetched.
LOCATE
语法:
LOCATE(substr,str[,pos])
功能:返回字符串str中子字符串substr第一次出现的位置,起始位置是pos,参数pos省略时起始位置是第一个字符。如果自起始位置pos后,substr不在str中,则返回0。
入参substr和str是可转成STRING的表达式,入参pos是可转成INTEGER的表达式;返回值是INTEGER。
说明:
该函数处理的是字符。
示例:
返回字符串“foobarbar”中子字符串“bar”第一次出现的位置,起始位置是第5个字符。
SELECT LOCATE('bar', 'foobarbar', 5); LOCATE('BAR', 'FOOBARBAR', 5) ----------------------------- 7 1 rows fetched.
子字符串“xbar”不在字符串“foobar”中,返回0。
SELECT LOCATE('xbar', 'foobar'); LOCATE('XBAR', 'FOOBAR') ------------------------ 0 1 rows fetched.