什么是 '。'在SQL Server查询中

时间:2017-12-06 19:56:05

标签: sql sql-server

我刚刚开始处理一个现有项目并看到类似这样的查询 -

select 100. * somecolumn1 / NULLIF(somecolumn2, 0.) AS ColumnValue,
from dbo.SomeTable

我不确定'是什么'。 select语句中的运算符。有人可以帮我理解吗?

这也只是大量SQL Server查询的一部分。如果我评论这个特定的select语句,查询将在大约7秒内运行,否则执行查询大约需要5分钟。这句话可以优化吗?

1 个答案:

答案 0 :(得分:1)

SQL Server执行整数除法。所以,1/2 = 0,而不是0.5。

要避免整数除法,您需要使用带小数位的值。最简单的方法是使用数字文字。我总是在小数位之后(和之前)包含0,因此值更容易看到:

select 100.0 * somecolumn1 / NULLIF(somecolumn2, 0.0) AS ColumnValue,
from dbo.SomeTable

我经常通过乘以1.0来实现这一目标。或者,您可以在整数列上使用cast()convert()