tsql - PATINDEX 和 CHARINDEX 的性能如何?

标签 tsql sql-server-2008

我一直在存储过程中使用 CHARINDEX 来检查 NVARCHAR(MAX) 类型的变量,但今天我发现 CHARINDEX有 8,000 字节的限制!

我找到这篇文章SQL CHARINDEX() Has Data Size Limitations .

所以我用PATINDEX替换了CHARINDEX,但是我不知道PATINDEXCHARINDEX之间的性能。

最佳答案

CHARINDEX您要查找的字符串的限制为 8000。不适用于您正在搜索的字符串。

那篇文章可能是错误的,除非您想查找长度 > 8000/4000 的字符串。但是,它还使用已弃用的文本数据类型。它的日期是 2007 年,所以他使用的是 SQL Server 2005 或 2000,但 SQL Server 2005 BOL 根本没有提到 8000,我也没有尝试过。

来自 SQL Server 2008 BOL:

CHARINDEX ( expression1 ,expression2 [ , start_location ] )

expression1 Is a character expression that contains the sequence to be found. expression1 is limited to 8000 characters.

expression2 Is a character expression to be searched.

注意:PATINDEX 没有提到 SQL 2008 或 2005 的 8000 限制。

最后,我会使用 CHARINDEX,因为我认为如果您不需要模式匹配,它对于直接搜索会更直观并且它支持长字符串

关于tsql - PATINDEX 和 CHARINDEX 的性能如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1372583/

相关文章:

mysql - 在 Max 语句之前/期间更改字段的值

sql - T-SQL:在修改事务结束之前运行的触发器

SQL格式自四舍五入开始删除小数

带有特殊字符的 SQL LIKE

sql - 将 SQL 格式化为一行

SQL Server : finding consecutive absence counts for students over custom dates

sql-server-2008 - 快速更新插入 Sql server 2008 R2

SQL Server 2008日志不会截断

sql-server - 无法将我的 .xlsx 导出到我的 Sql server 2008 数据库

sql-server - 将 nvarchar 列排序为整数