哪个是首选,为什么?为清楚起见,我使用整数值,但这些是字段名称。
选择 2*1.0/3
SELECT CAST(2 AS float)/3
SELECT CONVERT(float, 2)/3
最佳答案
从关于第一个和 CAST/CONVERT 的性能角度来看,我快速创建了一个临时表并使用 2 的值查询它:
CREATE TABLE #temp (Two FLOAT)
INSERT INTO #temp VALUES (2)
SELECT * FROM #temp
SELECT Two*1.0 / 3 FROM #temp
SELECT Two*1E0 / 3 FROM #temp
SELECT CAST(Two AS FLOAT) / 3 FROM #temp
SELECT CONVERT(FLOAT,Two) / 3 FROM #temp
从中选择时,无论我输入多少个不同的值,执行计划和统计 IO 都会给我相同的数字(每个四分之一)。我尝试输入其他值,如 5、6、7、8、9 等,甚至更多值,但成本是一样的。从上面列出的超越关系的文章(此处:http://beyondrelational.com/modules/2/blogs/77/posts/11334/cast-vs-convert-is-there-a-difference-as-far-as-sql-server-is-concerned-which-is-better.aspx)看来,使用您的第一种方法似乎没有任何效果,至少在小值上(我确实使用了 2,000,000)。
关于sql - 转换为 float : CAST vs CONVERT vs *1. 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13703325/