T-SQL中的差异指数

时间:2019-04-23 20:36:56

标签: sql sql-server unicode

在SQL Server 2017(14.0.2)中

请考虑下表:

CREATE TABLE expTest
(
    someNumbers [NVARCHAR](10) NULL
)

假设您用一些值填充了表:

INSERT INTO expTest VALUES('²', '2')

为什么以下SELECT返回两个行?

SELECT * 
FROM expTest 
WHERE someNumbers = '2'

nvarchar不会意识到'²'是unicode,而'2'是一个单独的值吗?如何(不使用UNICODE()函数)将该数据标识为非等效数据?

1 个答案:

答案 0 :(得分:2)

Here是db <>小提琴。显示以下内容:

  • 即使将值作为国家字符集常量输入,您的观察也是如此。
  • 字符的“ ASCII”版本实际上是不同的。
  • 区分大小写的排序规则解决了这个问题。

我认为指数只是作为数字的不同“大小写”对待,因此在不区分大小写的排序规则中将它们视为相同。

比较是区分大小写排序所期望的。