CHARINDEX 函数

CHARINDEX 函数搜索字符串,找到目标子字符串的第一次出现,搜索从源字符串内指定的或缺省的字符位置开始。

CHARINDEX 函数有此语法:
CHARINDEX 函数
元素 描述 限制 语法
source_ string 求值为字符串的表达式 必须为一表达式、常量、列或内建的字符类型或可转换为字符类型的类型的主变量 表达式
start_ position 要在 source 中开始搜索的顺序位置,此处的 1 为第一个逻辑字符 必须为一表达式、常量、列或内建的字符类型或可转换为字符类型的类型的主变量 表达式
substring 求值为字符串的表达式 必须为一表达式、常量、列或内建的字符类型或可转换为字符类型的类型的主变量 表达式

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

如果 sourcesubstring 为 NULL,则此函数返回 NULL。

如果可选的 start_position 值小于 1,或如果您省略此参数,则在 source 中的第一个逻辑字符处开始搜索 substring,如同您已指定了 1 作为起始位置一样。

如果找不到与 substring 相匹配的表达式,则 CHARINDEX 返回零(0)。否则,它返回在 substring 第一次出现的第一个逻辑字符的顺序位置。

如果您指定大于 1 的 start_position,则忽略在 start_position 之前开始的任何 substring,该函数返回下列值之一:
  • 或者是在第一个相匹配的子字符串中第一个逻辑字符的位置,其顺序位置等于或大于 start_position
  • 或者是零(0),如果开始于 start_position 或跟在 start_position 之后的 source 中没有 substring 出现,或如果 start_position 大于 source 中逻辑字符的数目。

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

在以 NLSCASE INSENSITIVE 选项创建的数据库中,如果 sourcesubstring 是 NCHAR 或 NVARCHAR 数据类型,则数据库服务器在确定 source 的给定的子字符串是否与目标 substring 相匹配时,忽略字母大小写的变化形式。

下列函数表达式返回 9
 CHARINDEX('com','www.ibm.com') 
在上面的示例中,CHARINDEX 在缺省的起始位置 1 开始它的搜索。
下列函数表达式返回 2
 CHARINDEX('w','www.ibm.com',2) 
在上面的示例中,由于最后的参数在位置 2 开始搜索,因此,CHARINDEX 忽略两个其他的相匹配的子字符串:
  • 位置 1 中的 'w',因为搜索开始于 2
  • 以及位置 3'w',因为该函数仅返回相匹配的子字符串第一次出现的位置。