CHARINDEX (Transact-SQL)

返回字符串中指定表达式的开始位置。

主题链接图标Transact-SQL 语法约定

语法

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 

参数

  • expression1
    一个表达式,其中包含要查找的字符的序列。expression1 是一个字符串数据类别的表达式。
  • expression2
    一个表达式,通常是一个为指定序列搜索的列。expression2属于字符串数据类别。
  • start_location
    开始在 expression2 中搜索 expression1 时的字符位置。如果 start_location 未被指定、是一个负数或零,则将从 expression2 的开头开始搜索。start_location 可以是 bigint 类型。

返回类型

如果 expression2 的数据类型为 varchar(max)nvarchar(max)varbinary(max),则为 bigint,否则为 int

备注

如果 expression1expression2 之一是 Unicode 数据类型(nvarcharnchar)而另一个不是,则将另一个转换为 Unicode 数据类型。CHARINDEX 不能与 textntextimage 数据类型一起使用。

如果 expression1expression2 之一为 NULL,并且数据库兼容级别为 70 或更高,则 CHARINDEX 将返回 NULL。如果数据库兼容级别为 65 或更低,则 CHARINDEX 将仅在 expression1expression2 都为 NULL 时才返回 NULL 值。

如果在 expression2 内找不到 expression1,则 CHARINDEX 返回 0。

CHARINDEX 将根据输入的排序规则执行比较操作。若要以指定排序规则进行比较,则可以使用 COLLATE 将显式排序规则应用于输入值。

返回的开始位置从 1 开始,而非从 0 开始。

示例

以下代码示例将返回字符序列 bicycleDocument 表的 DocumentSummary 列中开始的位置。

USE AdventureWorks;
GO
SELECT CHARINDEX('bicycle', DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO

下面是结果集:

----------- 
48          

以下示例将使用可选的 start_location 参数从 DocumentSummary 列的第五个字符开始查找 bicycle

USE AdventureWorks;
GO
SELECT CHARINDEX('bicycle', DocumentSummary, 5)
FROM Production.Document
WHERE DocumentID = 3;
GO

下面是结果集:

----------- 
48          

(1 row(s) affected)

以下示例显示了在 expression2 内找不到 expression1 时的结果集。

USE AdventureWorks;
GO
SELECT CHARINDEX('bike', DocumentSummary)
FROM Production.Document
WHERE DocumentID =6;
GO

下面是结果集:

----------- 
0          

(1 row(s) affected)

以下示例使用 COLLATE 函数。

USE tempdb;
GO
SELECT CHARINDEX ( 'Test', 'Das ist ein Test'  COLLATE Latin1_General_BIN);
GO

请参阅

参考

+(字符串串联)(Transact-SQL)
字符串函数 (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助