症状
假设你执行包含 LIKE 运算符的语句,该语句包含 Microsoft SQL Server 2008 R2、SQL Server 2012 或 SQL Server 2014 中的排序规则 Japanese_XJIS_100_CI_AS。 在 LIKE 模式中有一个日语重复字符 "ー" (Cho)。 当你执行语句时,可以将不匹配的类似模式视为匹配。 例如,当你执行以下语句时,N'BA ー1 "不匹配 N"% AB1 ":
if (N'BAー1' like N'%AB1%' Collate Japanese_XJIS_100_CI_AS)print 'Japanese_XJIS_100_CI_AS : BAー1 like %AB1% --> match'
结果匹配。
原因
出现此问题的原因是日语重复字符未正确处理。
解决方案
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2012 SP2 的累积更新2 /en-us/help/2983175
SQL Server 2012 SP1 的累积更新12 /en-us/help/2991533
SQL Server 2014 的累积更新3 /en-us/help/2984923
SQL Server 2008 R2 SP2 的累积更新13 /en-us/help/2967540
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。