谁能想到一个理由这样做:在SQL Server查询中,实数值排序与浮点数不同吗?
SELECT * FROM表A ORDER BY CAST(CAST(RealColumnA如为nvarchar(50))为float) --where RealColumnA在表
定义为真正的我的一位前开发人员坚持认为这是实现正确排序的必要条件。任何人都可以想到一个可能是真的理由吗?
orderby子句中的表演是一个很大的表现杀手。但是我需要确保在删除它之前没有必要。
谁能想到一个理由这样做:在SQL Server查询中,实数值排序与浮点数不同吗?
SELECT * FROM表A ORDER BY CAST(CAST(RealColumnA如为nvarchar(50))为float) --where RealColumnA在表
定义为真正的我的一位前开发人员坚持认为这是实现正确排序的必要条件。任何人都可以想到一个可能是真的理由吗?
orderby子句中的表演是一个很大的表现杀手。但是我需要确保在删除它之前没有必要。
删除它。 ORDER BY是你期望的。它肯定会是一个性能杀手。
关于SQL的规则#1。问题(和测试)所有(和其他人)的假设。 (特别是像这样奇怪的人。)
这没有任何意义。特别是与CAST
右后卫。
我唯一能看到的是如果你在float
中存储非float
信息,并希望它按照意图进行排序。我猜你可能想这一点:
1
10
11
12
2
3
4
5
6
7
8
9
但通常当那样的存储优化完成(如SSN或存储在一个int一个电话号码,说的),有假设上,这意味着左侧隐填充任何预期的排序都与普通的数字排序相同。