CHARINDEX 函数搜索字符串,找到目标子字符串的第一次出现,搜索从源字符串内指定的或缺省的字符位置开始。
CHARINDEX 函数有此语法:
元素 |
描述 |
限制 |
语法 |
source_ string |
求值为字符串的表达式 |
必须为一表达式、常量、列或内建的字符类型或可转换为字符类型的类型的主变量 |
表达式 |
start_ position |
要在 source 中开始搜索的顺序位置,此处的 1 为第一个逻辑字符
|
必须为一表达式、常量、列或内建的字符类型或可转换为字符类型的类型的主变量 |
表达式 |
substring |
求值为字符串的表达式 |
必须为一表达式、常量、列或内建的字符类型或可转换为字符类型的类型的主变量 |
表达式 |
CHARINDEX 的参数不可为用户定义的数据类型。
如果 source 或 substring 为 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 选项创建的数据库中,如果 source 或 substring 是 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',因为该函数仅返回相匹配的子字符串第一次出现的位置。