如何解决 SQL 服务器中 N'salam' 和 N'salam' 相等?

How to solve equality between N'سلام' and N'سـلام' in SQL Server?

当我尝试在 SQL 服务器中比较两个词,如 N'سلام' 和 N'سـلام' 时,没有区别。

select 
case 
    when 
        N'سـلام' = N'سلام'
            then 1 
            else 0 
end

我尝试通过设置两个词的排序规则来解决问题,但没有用。

select 
case 
    when 
        N'سـلام' collate Persian_100_cs_as_ws = N'سلام' collate Persian_100_cs_as_ws
            then 1 
            else 0 
end

两个输出结果都是1

您可以使用二进制排序规则。

select 
case 
    when 
        N'سـلام' = N'سلام' COLLATE Persian_100_BIN
            then 1 
            else 0 
end

结果为 0

编辑: 运行 以下查询的结果确认只有二进制排序规则才能识别差异。

SELECT N'select ''' + name + N''', case when N''سـلام'' = N''سلام'' COLLATE ' + name + N'  then 1 else 0 end ' 
FROM sys.fn_helpcollations()