暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T 字符串查找函数FIND_IN_SET、INSTR 、INSTR B、LOCATE

原创 章芋文 2019-09-24
2971

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.
最后修改时间:2019-09-24 23:30:15
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论