比较 CHARINDEX 和 PATINDEX

商帝国咨询头像

阅读 9704 | 分类:文章

比较 CHARINDEX 和 PATINDEX

CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置。PATINDEX 可使用通配符,而 CHARINDEX 不可以。

这两个函数都带有两个参数:

  • 希望获取其位置的模式。使用 PATINDEX,模式是可以包含通配符的字面字符串。使用 CHARINDEX,模式是字面字符串(不能包含通配符)。
  • 字符串值表达式(通常为列名),Microsoft® SQL Server™ 在其中搜索指定的模式。

例如,查找模式"wonderful"在 titles 表中 notes 列的某一特定行中的开始位置。

USE pubs

SELECT CHARINDEX('wonderful', notes)

FROM titles

WHERE title_id = 'TC3218'

下面是结果集:

----------------

46

(1 row(s) affected)

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

例如,使用通配符查找模式"candies"在 Categories 表中的 Description 列的任一行中的开始位置:

USE Northwind
GO
SELECT CategoryID, PATINDEX('%candies%', Description)AS POSITION
FROM Categories
WHERE PATINDEX('%candies%', Description) <> 0

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

PATINDEX 对 text 数据类型很有用;除 IS NULL、IS NOT NULL 和 LIKE(这些是 WHERE 子句中对 text 类型有效的仅有的其它比较运算)外,PATINDEX 也可用于 WHERE 子句中。

留言区(共0条)

暂无留言,快来抢占沙发~
作者声明:非原创
平台声明:文章及评论仅代表作者本人观点,五略商书系信息发布平台,仅提供信息存储空间服务,如有侵权,请联系13521509118。转载请注明作者和出处:转自五略商书m.shangdiguo.com,作者商帝国咨询!