现在的位置: 首页 > 综合 > 正文

CHARINDEX和PATINDEX比较

2017年12月18日 ⁄ 综合 ⁄ 共 823字 ⁄ 字号 评论关闭

该资料来自于Sql Server帮助文档,由于在我的一个小项目中用到CHARINDEX关键字,因此在此整理出来,与大家一起分享。

CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置。PATINDEX 可以使用通配符,而 CHARINDEX 不能。
这两个函数都带有两个参数:
• 希望获取其位置的模式。使用 PATINDEX,模式是可以包含通配符的文字字符串。使用 CHARINDEX,模式是不包含通配符的文字字符串。
• 字符串值表达式(通常为列名),SQL Server 2005 在其中搜索指定的模式。

    

例如,查找模式 armDocument 表中 Title 列的某一行中的开始位置。

 
USE AdventureWorks;
GO
SELECT CHARINDEX('arm', Title)
FROM Production.Document
WHERE DocumentID = '1';
GO

下面是结果集: 

 
----------------
7

(1 row(s) affected)

如果未限制搜索的行,查询将返回表中的所有行,并对在其中查找到该模式的所有行报告非零值,对其他行报告零值。

下面的示例介绍了使用通配符查找模式 reflectorDocument 表中 Title 列的任一行中的开始位置。

 
USE AdventureWorks;
GO
SELECT DocumentID, PATINDEX('%reflector%', Title)AS POSITION
FROM Production.Document
WHERE PATINDEX('%reflector%', Title) <> 0;
GO

下面是结果集: 

 
DocumentID        POSITION
----------        --------
2                 7
3                 7

(2 row(s) affected)

如果没有限制要搜索的行,查询将返回表中的所有行,对在其中找到该模式的所有行报告非零值。

*注意:CHARINDEX 不能与 text、ntext 和 image 数据类型一起使用。

抱歉!评论已关闭.