有人可以解释一下吗:
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
结果: 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()
排序按预期发生。
(我最初的查询使用''
andN''
文字语法来区分varchar()
andnvarchar()
而不是CAST()
得到相同的结果。)
数据库的排序规则设置为SQL_Latin1_General_CP1_CI_AS
.