如何解决 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()
当我尝试在 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()