今天来分享一个oracle中的函数:instr
instr函数种类:
instr函数系列有(instr,instrb,instrc,instr2,instr4),这些函数主要是使用字符来搜索一个字符串的子串,并且返回该字符串中指定的子串的字符第一次出现的位置。函数的不同之处在于它们如何确定要返回的子字符串的位置。
instr:默认按照输入的字符集来计算使用的字符串的长度。
instrb:使用字节来计算长度
instrc:使用unicode完整字符来计算长度
instr2:使用usc2代码点来计算长度
instr4:使用USC4代码点来计算长度
返回值
当成功搜索到的时候会返回一个非0的整数值,否则会返回一个0.
语法:
{INSTR | INSTRB | INSTRC | INSTR2 | INSTR4} (string , substring [, position [, occurrence]])
参数介绍:
string
:要搜索的文本表达式。
substring
:要搜索的字符串
position
:一个非0的数值表示,表示该函数在字符串的哪里开始进行搜索。如何计算这个位置,按照上面instr函数分类所说的那些不同的方式来计算。
当position
的值是一个负数的时候,instr函数将会从该字符串的末尾开始反着计算个数,position
的默认值是1,表示该函数一般会从字符串的一开始进行搜索。
occurrence
:一个整数表示函数应该在字符串出现的地方进行搜索。occurrence
的值必须是正数,默认值是1,意味着函数搜索子串第一次出现的位置。
例子1:下面的例子搜索的字符串是Corporate Floor
,从第三个字符开始来搜索or
字符串,它返回在Corporate Floor
中or
第二次出现的地方的开始位置:
SELECT INSTR('Corporate Floor','or', 3, 2) AS position FROM dual;
结果:14
例子2:函数从最后一个字符向后计数到结尾的第三个字符,这是Floor
中的第一个o
,然后,该函数向后搜索第二次出现的or
,并发现第二次出现以搜索字符串中的第二个字符开头。
SELECT INSTR('Corporate Floor','or', -3, 2) AS position FROM dual;
结果:2