第1个回答 推荐于2018-04-12
instr函数在Oracle/PLSQL中是返回要截取的字符串在源字符串中的位置。instr是一个非常好用的字符串处理函数,几乎所有的字符串分隔都用到此函数。
语法如下:
instr( string1, string2, start_position,nth_appearance )
示例:
SELECT instr('syranmo','s') FROM dual; -- 返回 1
SELECT instr('syranmo','ra') FROM dual; -- 返回 3
SELECT instr('syran mo','a',1,2) FROM dual; -- 返回 0本回答被网友采纳
第2个回答 2013-11-23
常用方法:
instr(pos,str1,str2,CompareMethod)
其中pos是str1开始的位置,str1是被查找字符串,str2是匹配的字符串。假如找到,返回找到的首字符位置,否则,返回0.
假如str1="abcababca" , str2="abc",pos=4
则从第四个字符("a")开始往后在"abcababca"查找"abc",返回值应该是6,即下一次出现"abc"是在第六个位置开始。
CompareMethod是选择是否区分大小写,默认不填是不区分的意思。
========================================
另外可以参考msdn上的说明:
参数
Start
可选项。数值表达式,设置每个搜索的起始位置。如果省略该参数,则从第一个字符位置开始搜索。起始索引从一开始。
String1
必选项。搜索的 String 表达式。
String2
必选项。查找的 String 表达式。
Compare
可选项。指定字符串比较的类型。如果省略 Compare,则由 Option Compare 设置确定比较类型。指定一个有效的 LCID (LocaleID),以在比较中使用区域设置特定的规则。
设置
compare 参数设置包括:
常量 值 说明
Binary 0 执行二进制比较
Text 1 执行文本比较
返回值
如果 InStr 返回
String1 为零长度或 Nothing 0
String2 为零长度或 Nothing start
未找到 String2 0
在 String1 中找到 String2 匹配开始的位置
Start > String2 0
异常/错误
异常类型 错误号 条件
ArgumentException 5 Start < 1。
注意
Visual Basic 早期版本中的 InStrB 函数返回字节数,而不是字符位置。它主要用于在双字节字符集 (DBCS) 应用程序中转换字符串。所有 Visual Basic .NET 字符串均采用 Unicode 的形式,并且不再支持 InStrB。
示例
本例使用 InStr 函数返回一个字符串在另一个字符串中的第一个匹配项的位置。
====================以下是示例代码====================
Dim SearchString, SearchChar As String
Dim MyPos As Integer
SearchString ="XXpXXpXXPXXP"
' String to search in.
SearchChar = "P"
' Search for "P".
' A textual comparison starting at position 4. Returns 6.
MyPos = InStr(4, SearchString, SearchChar, CompareMethod.Text)
' A binary comparison starting at position 1. Returns 9.
MyPos = InStr(1, SearchString, SearchChar, CompareMethod.Binary)
' Comparison is binary by default (last argument is omitted).
MyPos = InStr(SearchString, SearchChar)
' Returns 9.
MyPos = InStr(1, SearchString, "W")
' Returns 0.本回答被网友采纳