我们的一位QA工程师偶然发现了这一点:
SELECT DisplayName
FROM Products
WHERE (DisplayName LIKE N'%ὡ%')
此查询匹配100%的DisplayName值,即使它们都不包含"ὡ" (U + 1F61)。 DisplayName是nvarchar(max)。我们希望防止这种情况发生。想法?
答案 0 :(得分:5)
是的,看起来Martin Smith对于100
整理组是正确的。以下示例(2014年试用)证明:
declare @t table (
ValueSQL nvarchar(20) collate SQL_Latin1_General_CP1_CI_AS,
ValueWin nvarchar(20) collate Latin1_General_CI_AS,
ValueWin100 nvarchar(20) collate Latin1_General_100_CI_AS
);
insert into @t
select 'Abc', 'Abc', 'Abc';
SELECT case when t.ValueSQL like N'ὡ%' then t.ValueSQL end as [MatchSQL],
case when t.ValueWin like N'ὡ%' then t.ValueWin end as [MatchWin],
case when t.ValueWin100 like N'ὡ%' then t.ValueWin100 end as [MatchWin100]
FROM @t t;