SQL服务器中包含普通数字和上标数字的符号比较

Comparison of symbols containing normal numbers and superscript numbers in SQL Server

我只是 运行 在 SQL 服务器上遇到一些问题,同时比较在标准字符旁边包含上标字符的列。只要我比较 VARCHAR 中的列,它就会按预期工作。在 NVARCHAR 中,正常数字和上标数字被视为相等,如以下示例代码所示:

CREATE TABLE #uom
(
    SYMBOL_N1 NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS
,   SYMBOL_N2 NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS
,   SYMBOL_V1 VARCHAR(50)  COLLATE SQL_Latin1_General_CP1_CI_AS
,   SYMBOL_V2 VARCHAR(50)  COLLATE SQL_Latin1_General_CP1_CI_AS
)

INSERT INTO #uom VALUES ('in²','in2','in²','in2')

SELECT 
    CASE WHEN SYMBOL_N1 = SYMBOL_N2 THEN 1 ELSE 0 END AS N
,   CASE WHEN SYMBOL_V1 = SYMBOL_V2 THEN 1 ELSE 0 END AS V
FROM #uom;

--RESULTS
--N = 1
--V = 0

由于我们有时也会使用国际字符,所以这里必须使用UNICODE。

任何人都有想法,如何让 SQL 服务器将两个值视为不同的值?

最好的,斯特凡

使用二进制整理

SELECT *,
    CASE WHEN SYMBOL_N1 COLLATE LATIN1_GENERAL_BIN  = SYMBOL_N2 COLLATE LATIN1_GENERAL_BIN THEN 1 ELSE 0 END AS N
,   CASE WHEN SYMBOL_V1 = SYMBOL_V2 THEN 1 ELSE 0 END AS V
FROM #uom;