INSTR 函数

INSTR 函数从字符串搜索指定的子字符串,并基于子字符串出现的次数返回在那个字符串中子字符串终止出现处的字符位置。

INSTR 函数有此语法:
INSTR 函数
元素 描述 限制 语法
count 求值为 > 0 整数的表达式 必须为表达式、常量、列或内建的整数类型或可转换为整数的主变量。 表达式
source_string 求值为字符串的表达式 必须为表达式、常量、列或内建的字符数据类型或可转换为字符类型的主变量 表达式
start source_string 中开始搜索的顺序位置,在此,1 是第一个逻辑字符 必须为表达式、常量、列或内建的整数类型或可转换为正的或负的整数的主变量 表达式
substring 求值为字符串的表达式 必须为表达式、常量、列或内建的字符数据类型或可转换为字符类型的主变量 表达式

INSTR 的参数不可为用户定义的数据类型。

在这些情况下,该函数返回 NULL:
  • count 小于或等于零(0)。
  • source_string 为 NULL 或长度为零。
  • substring 为 NULL 或长度为零。
在下列情况下,返回值为零(0):
  • 如果在 source_string 发现没有出现 substring
  • 如果 start 大于 source_string 的长度。
  • 如果在 source_stringsubstring 的出现少于 count

如果您省略可选的 count 参数,则缺省的 count 值为 1。

在支持多字节字符集的语言环境中,返回值为 source_string 中逻辑字符之中的顺序值。在单字节语言环境中,比如缺省的语言环境,返回值等同于字节位置,在此,第一个字节在位置 1 中。

start 位置

如果省略 start 或指定 start 为零,则对 substring 的搜索从字符位置 1 开始。如果 start 为负的,则在 source_string 结束的位置开始搜索 substring 的出现,并向着开头方向处理。
  • 在从左至右的语言环境中,负的 start 值指定从右至左的搜索。
  • 在从右至左的语言环境中,负的 start 值指定从左至右的搜索。
然而,在这两种类型的语言环境中,都是在 source_string 之内对应于 start 的绝对值的逻辑字符位置上开始搜索。

在从右至左的语言环境中,负的 start 值指定从左至右的搜索。

INSTR 函数表达式的示例

下列表达式都是基于相同的 source_stringsubstring 的。此示例返回 3,作为第一个 'er' 子字符串的字符位置:
INSTR("wwerw.ibm.cerom", "er")

在上面的示例中,startcount 都缺省为 1

下一个示例在第二个字符位置开始搜索,带有缺省的 count 1
INSTR("wwerw.ibm.cerom", "er", 2)
上面的表达式返回 3,从左至右的搜索在第一个 'er' 子字符串中遇到的第一个字符的位置。
下一个示例指定 count 2,在 source_string 的第一个字符中开始搜索:
INSTR("wwerw.ibm.cerom", "er", 1, 2)
上面的表达式返回 12,第二个 'er' 开始的位置。
下列示例指定 -5 作为开始的位置,且 count 指定在 source_string 的第 5 个位置与开头之间 "er" 的第一次出现:
INSTR("wwerw.ibm.cerom", "er", -5, 1)
这返回 3,对应于从那个位置开始 "er" 子字符串的第一次出现。负的 start 参数指定从右至左的查询,但返回值为 3,因为在缺省的语言环境中,字符串和子字符串的读方向为从左至右的。