概述
CHARINDEX
在使用如下排序规则时偶尔会返回错误的值:
Latin1_General_CI_AS
但适用于如下排序规则:
SQL_Latin1_General_CP1_CI_AS
在 MS SQL Server 2008 R2 和 SQL Server 2016 上遇到过这种情况。
例子
假设数据库排序顺序为:
Latin1_General_CI_AS
print CHARINDEX( CHAR(254), 'Tþ' )
-- 返回正确的 2print CHARINDEX( CHAR(254), 'Th' )
-- 返回错误的 1print CHARINDEX( CHAR(253), 'Th' )
-- 返回正确的 0print CHARINDEX( CHAR(254) Collate SQL_Latin1_General_CP1_CI_AS, 'Thþ' Collate SQL_Latin1_General_CP1_CI_AS)
-- 返回正确的 3print CHARINDEX( CHAR(254) Collate Latin1_General_CI_AS, 'Thþ' Collate Latin1_General_CI_AS)
-- 返回错误的 1
Latin1...
排序规则是否存在已知错误?