誰かがこれを説明できますか:
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
。