区分T-SQL中的指数
在SQL Server 2017中(14.0.2) 考虑下表:区分T-SQL中的指数,sql,sql-server,unicode,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”是一个单独的值
CREATE TABLE expTest
(
someNumbers [NVARCHAR](10) NULL
)
假设您用一些值填充表格:
INSERT INTO expTest VALUES('²', '2')
为什么下面的SELECT同时返回两行
SELECT *
FROM expTest
WHERE someNumbers = '2'
nvarchar
不应该意识到“²”是unicode,而“2”是一个单独的值吗?如何(不使用UNICODE()函数)将此数据标识为不等价 是一把小提琴。这表明:
- 即使这些值作为国家字符集常量输入,您的观察结果也是正确的
- 字符的“ASCII”版本实际上是不同的
- 通过区分大小写的排序,问题就解决了
比较与区分大小写的排序规则相同。您的排序规则设置是什么?例如,您没有使用UNICODE字符串,但问题来自您使用的排序规则。您的insert语句中似乎有语法错误@christopher@DaleBurrellSQL拉丁语通用CP1 CI AS