2009-01-28 19 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一个电话号码,说的),有假设上,这意味着左侧隐填充任何预期的排序都与普通的数字排序相同。