请单击以进行评分并提供反馈
MSDN
MSDN Library
SQL Server
SQL Server 2008
数据库引擎
技术参考
 CHARINDEX (Transact-SQL)

  开启低带宽视图
社区内容
本节内容
统计 批注 (0)
同时提供下列产品的其他版本:
SQL Server 2008 联机丛书(2009 年 5 月)
CHARINDEX (Transact-SQL)

expression2 中搜索 expression1 并返回其起始位置(如果找到)。搜索的起始位置为 start_location

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

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 
expression1

包含要查找的序列的字符表达式expression1 最大长度限制为 8000 个字符。

expression2

要搜索的字符表达式。

start_location

表示搜索起始位置的整数或 bigint 表达式。如果未指定 start_location,或者 start_location 为负数或 0,则将从 expression2 的开头开始搜索。

如果 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 列中开始的位置。

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +
                   ' components of your bicycle.'
SELECT CHARINDEX('bicycle', @document)
GO

下面是结果集:

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

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

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +
                   ' components of your bicycle.'
SELECT CHARINDEX('vital', @document, 5)
GO

下面是结果集:

----------- 
16          

(1 row(s) affected)

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

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +
                   ' components of your bicycle.'
SELECT CHARINDEX('bike', @document)
GO

下面是结果集:

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

(1 row(s) affected)

下面的示例在 'Das jst ein Test' 中执行区分大小写的字符串 'TEST' 搜索。

USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX ( 'TEST',
       'Das ist ein Test'
       COLLATE Latin1_General_CS_AS)

下面是结果集:

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

下面的示例在 'Das jst ein Test' 中执行区分大小写的字符串 'Test' 搜索。

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

下面是结果集:

----------- 
13          

下面的示例在 'Das jst ein Test' 中执行不区分大小写的字符串 'TEST' 搜索。

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

下面是结果集:

----------- 
13          
社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利  |  商标  |  隐私权声明
Page view tracker