有人能解释一下这个吗:
SELECT
CASE WHEN CAST('iX' AS nvarchar(20))
> CAST('-X' AS nvarchar(20)) THEN 1 ELSE 0 END,
CASE WHEN CAST('iX' AS varchar(20))
> CAST('-X' AS varchar(20)) THEN 1 ELSE 0 END
Results: 0 1
SELECT
CASE WHEN CAST('i' AS nvarchar(20))
> CAST('-' AS nvarchar(20)) THEN 1 ELSE 0 END,
CASE WHEN CAST('i' AS varchar(20))
> CAST('-' AS varchar(20)) THEN 1 ELSE 0 END
结果:1 1
在第一个查询中,nvarchar()
的结果不是我期望的,但是去掉 X
后,nvarchar()
的排序就按照预期进行。
(我的原始查询使用了 ''
和 N''
文字语法来区分 varchar()
和 nvarchar()
,而不是 CAST()
,得到了相同的结果。)
数据库的排序设置为 SQL_Latin1_General_CP1_CI_AS
。