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

cpk*_*cpk 11 sql sql-server

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

    SELECT DisplayName
    FROM Products
    WHERE (DisplayName LIKE N'%?%')
Run Code Online (Sandbox Code Playgroud)

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

Rog*_*olf 5

是的,看起来马丁史密斯对于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;
Run Code Online (Sandbox Code Playgroud)