【发布时间】:2016-04-18 09:28:37
【问题描述】:
在 MS SQL Server 2012 中,我想比较包含 Unicode 文本的数据类型为 nvarchar 的两列。
即使值不同,以下查询也不会返回任何内容。
DECLARE @TABLE TABLE(
A nvarchar(100),
B nvarchar(100)
);
INSERT INTO @TABLE VALUES (N'A²', N'A2')
SELECT *
FROM @TABLE
WHERE A <> B;
我尝试了二进制排序规则,它可以工作:
DECLARE @TABLE TABLE(
A nvarchar(100),
B nvarchar(100)
);
INSERT INTO @TABLE VALUES (N'A²', N'A2');
SELECT *
FROM @TABLE
WHERE A COLLATE Latin1_General_BIN = B COLLATE Latin1_General_BIN;
还有其他选择吗?或者只能通过排序来完成?
【问题讨论】:
-
Afaik,您需要使用不同的排序规则,因为即使值 A2 和 A^2 的校验和相同
-
Latin1_General_BIN 排序规则有效,比较很好。我需要使用不同的排序规则是什么意思?
标签: sql sql-server tsql sql-server-2012 collation