SQL Server搜索“ὡ”(U + 1F61)匹配所有?

时间:2014-12-03 21:52:12

标签: sql sql-server

我们的一位QA工程师偶然发现了这一点:

    SELECT DisplayName
    FROM Products
    WHERE (DisplayName LIKE N'%ὡ%')

此查询匹配100%的DisplayName值,即使它们都不包含"ὡ" (U + 1F61)。 DisplayName是nvarchar(max)。我们希望防止这种情况发生。想法?

1 个答案:

答案 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;