2009-01-28 82 views
1

誰能想到一個理由這樣做:在SQL Server查詢中,實數值排序與浮點數不同嗎?

SELECT * FROM表A ORDER BY CAST(CAST(RealColumnA如爲nvarchar(50))爲float) --where RealColumnA在表

定義爲真正的

我的一位前開發人員堅持認爲這是實現正確排序的必要條件。任何人都可以想到一個可能是真的理由嗎?

orderby子句中的表演是一個很大的表現殺手。但是我需要確保在刪除它之前沒有必要。

回答

5

刪除它。 ORDER BY是你期望的。它肯定會是一個性能殺手。

關於SQL的規則#1。問題(和測試)所有(和其他人)的假設。 (特別是像這樣奇怪的人。)

0

這沒有任何意義。特別是與CAST右後衛。

我唯一能看到的是如果你在float中存儲非float信息,並希望它按照意圖進行排序。我猜你可能想這一點:

1 
10 
11 
12 
2 
3 
4 
5 
6 
7 
8 
9 

但通常當那樣的存儲優化完成(如SSN或存儲在一個int一個電話號碼,說的),有假設上,這意味着左側隱填充任何預期的排序都與普通的數字排序相同。