CHARINDEX (Transact-SQL)
2011-02-17 17:50
197 查看
SQL Server 2008 R2
SQL Server 2008
SQL Server 2005
在 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。
注释
如果 expression1 或
expression2 之一是 Unicode 数据类型(nvarchar 或
nchar)而另一个不是,则将另一个转换为 Unicode 数据类型。CHARINDEX 不能与
image 数据类型一起使用。
如果 expression1 或
expression2 之一为 NULL,并且数据库兼容级别为 70 或更高,则 CHARINDEX 将返回 NULL。如果数据库兼容级别为 65 或更低,则 CHARINDEX 将仅在
expression1 和 expression2 都为 NULL 时才返回 NULL 值。
如果在 expression2 内找不到
expression1,则 CHARINDEX 返回 0。
CHARINDEX 将根据输入的排序规则执行比较操作。若要以指定排序规则进行比较,则可以使用 COLLATE 将显式排序规则应用于输入值。
返回的开始位置从 1 开始,而非从 0 开始。
示例
以下示例返回字符序列 bicycle 在 Document 表的
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' 搜索。
下面是结果集:
-----------
13
SQL Server 2008
SQL Server 2005
在 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。
注释
如果 expression1 或
expression2 之一是 Unicode 数据类型(nvarchar 或
nchar)而另一个不是,则将另一个转换为 Unicode 数据类型。CHARINDEX 不能与
image 数据类型一起使用。
如果 expression1 或
expression2 之一为 NULL,并且数据库兼容级别为 70 或更高,则 CHARINDEX 将返回 NULL。如果数据库兼容级别为 65 或更低,则 CHARINDEX 将仅在
expression1 和 expression2 都为 NULL 时才返回 NULL 值。
如果在 expression2 内找不到
expression1,则 CHARINDEX 返回 0。
CHARINDEX 将根据输入的排序规则执行比较操作。若要以指定排序规则进行比较,则可以使用 COLLATE 将显式排序规则应用于输入值。
返回的开始位置从 1 开始,而非从 0 开始。
示例
以下示例返回字符序列 bicycle 在 Document 表的
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
相关文章推荐
- CHARINDEX (Transact-SQL)
- CHARINDEX (Transact-SQL)
- Transact-SQL 的算术函数
- sql中charindex的使用
- SQL中Charindex和Oracle中对应的函数Instr对比
- 在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结
- Transact-SQL语法速查手册
- CAST 和 CONVERT (Transact-SQL)
- Transact-SQL 语法约定 (Transact-SQL)
- 我收藏的Transact_SQL小手册,适合初学者
- Transact-SQL对引号的处理
- SQL SERVER2000教程-第七章 Transact-SQL编程 第二节 流程控制命令
- 【Transact-SQL】SQL Server自动把left join自动转化为inner join、以及关联时的数据重复问题
- 用Transact-SQL脚本来修改SQL SERVER最大最小内存设置项
- 【ROW_NUMBER 函数(Transact-SQL)】
- Sql Server2005 Transact-SQL 新兵器学习总结之-EXCEPT和INTERSECT运算符
- [SQL Server] RANK (Transact-SQL) 返回结果集的分区内每行的排名
- Sql Server2005 Transact-SQL 新兵器学习总结之-DDL触发器
- 使用Transact-SQL进行数据导入导出方法详解
- Sql Server2005 Transact-SQL 新兵器学习总结之-TOP 运算符