- CHARINDEX 函数:
会在第二个字符表达式中搜索一个字符表达式,这将返回个表达式(如果发现存在)的开始位置。
语法
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
- 参数
expressionToFind 一个字符表达式,其中包含要查找的序列。 expressionToFind 限制为 8000 个字符 。
expressionToSearch 要搜索的字符表达式。
start_location 表示搜索开始位置的 integer 或 bigint 表达式 。 如果 start_location 未指定、具有负数值或 0,搜索将从 expressionToSearch 的开头开始 。
- 返回类型
如果 expressionToSearch 具有一个 nvarchar(max)、varbinary(max) 或 varchar(max) 数据类型,则为 bigint;否则为 int 。
DECLARE @document varchar(64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bicycle', @document);
GO
/*返回值为 48 */
select charindex(CHAR(32),'this Test is Test')
- 从特定位置中搜索
DECLARE @document varchar(64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('vital', @document, 5);
GO
/*返回值为 16 */
- 搜索不存在的表达式
DECLARE @document varchar(64);
SELECT @document = 'Reflectors are vital safety' +
' components of your bicycle.';
SELECT CHARINDEX('bike', @document);
GO
- 执行区分大小写的搜索
- 此示例在搜索的字符串
'This is a Test``'
中执行区分大小写的字符串'TEST'
搜索。
USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX ( 'TEST',
'This is a Test'
COLLATE Latin1_General_CS_AS);
/*返回值为 0*/
- 此示例在'This test is a Test'中执行区分大小写的字符串'Test'搜索。
USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
'This test is a Test'
COLLATE Latin1_General_CS_AS);
/*返回值为16*/
- 执行不区分大小写的搜索
- 此示例在
'
This test is a Test'
中执行不区分大小写的字符串'TEST'
搜索。
USE tempdb;
GO
SELECT CHARINDEX ( 'TEST',
'This test is a Test'
COLLATE Latin1_General_CI_AS);
GO
/*返回值为6*/