【发布时间】:2011-03-04 16:09:00
【问题描述】:
谁能解释一下:
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() 排序按预期发生。
(我的原始查询使用'' 和N'' 文字语法来区分varchar() 和nvarchar() 而不是CAST() 并得到相同的结果。)
数据库的排序规则设置为SQL_Latin1_General_CP1_CI_AS。
【问题讨论】:
-
快速跟进:在我的情况下,“-”仅用作某些复杂文本的排序代码的填充字符。我把它换成了“!”现在可以正常使用了。
标签: sql-server-2005 tsql unicode collation nvarchar