AI摘要

文章介绍了SQL中的CHARINDEX函数,它类似于POS函数,用于在存储过程中实现字符判断功能。CHARINDEX函数的语法是CHARINDEX(expression1, expression2 [, start_location]),其中expression1是包含要查找序列的字符表达式,expression2是要搜索的字符表达式,start_location是可选的搜索起始位置。返回类型为bigint或int,取决于expression2的数据类型。如果expression1或expression2之一是Unicode数据类型,另一个将被转换为Unicode数据类型。CHARINDEX不能与text、ntext和image数据类型一起使用。如果expression1或expression2之一为NULL,CHARINDEX将返回NULL。如果在expression2内找不到expression1,CHARINDEX返回0。返回的开始位置从1开始,而非0。文章还提供了几个示例,展示了CHARINDEX函数的使用方法和结果。
文章介绍了SQL中的CHARINDEX函数,它类似于POS函数,用于在存储过程中实现字符判断功能。CHARINDEX函数的语法是CHARINDEX(expression1, expression2 [,

今天在要存储过程中实现字符判断功能,想找一个跟POS类似的函数,搜索后发现SQL里其实也有类似POS的函数CHARINDEX ,解释如下:

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

如果 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       

 

※相关文章推荐※



最后修改:2009 年 08 月 16 日
点赞的人是最酷的