Может кто-нибудь объяснить, пожалуйста:
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
.