在我寫的一個測試案例中,字符串比較似乎在SQL Server/.NET CLR之間沒有相同的工作方式。.NET與T-SQL之間的比較差異?
此C#代碼:
string lesser = "SR2-A1-10-90";
string greater = "SR2-A1-100-10";
Debug.WriteLine(string.Compare("A","B"));
Debug.WriteLine(string.Compare(lesser, greater));
將輸出:
-1
1
此SQL Server代碼:
declare @lesser varchar(20);
declare @greater varchar(20);
set @lesser = 'SR2-A1-10-90';
set @greater = 'SR2-A1-100-10';
IF @lesser < @greater
SELECT 'Less Than';
ELSE
SELECT 'Greater than';
將輸出:
Less Than
爲什麼區別?
您是否考慮了區分大小寫? – 2010-09-27 21:47:08
案件是一樣的。區別在於每個人如何將'0'對待爲' - '。 – 2010-09-27 21:47:49
我認爲這是一個Unicode問題。編輯:也許不是。對我來說,SQL Server代碼返回'大於'。您正在測試的數據庫中的默認排序規則是什麼? – 2010-09-27 21:51:52