sql - 转换为 float : CAST vs CONVERT vs *1. 0

标签 sql sql-server floating-point int

哪个是首选,为什么?为清楚起见,我使用整数值,但这些是字段名称。

  1. 选择 2*1.0/3
  2. SELECT CAST(2 AS float)/3
  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/

相关文章:

mysql - 使用 WHERE 和 AND 参数的 LEFT JOIN

sql - 将两个匿名表相互连接

mysql - 在 MSSQL 和 mySQL 中获取所有表及其数据

c# - 以编程方式附加数据库

c 代码不适用于带有 float 的 Turbo C++

swift - 不能使数字为负

mysql - SQL 查询 - 分组依据不起作用

mysql - 如何将 2 个不同的列分组在一起

mysql - 如何将键映射到 MySQL 选择查询中单个字段的值

Javascript float 比较