我正在尝试理解SQL Server 2012中的一个小函数调用。我试图在线搜索它但找不到太多信息。
功能本身很简单。它有两个参数@value和@default,都是int。当@value为null或0时,此函数DivFix
返回@default,否则返回@value本身。
在各种SQL语句中调用此函数以避免除以零错误。
Select col1 / DivFix(col2,1e8)
我的问题是,1e8在这里代表什么,它如何帮助克服零差错?
答案 0 :(得分:2)
表示10 ^ 8(10次幂8),因此为100000000。 它是" power(10,8)"
的缩写从数学的角度来看,它并不是一个很好的方法来处理"除以0和#34;问题恕我直言。
使用一个非常小的数字(返回接近无限而不是NaN / a失败的东西)而不是这个非常大的数字(这使得微积分返回"接近0但接近0但更有意义)不完全",除非最后的舍入使其等于0)。
答案 1 :(得分:0)
xEy
是x * 10^y
的常见简写。所以2e8 = 2 * 10^8
。
至于它如何帮助除以零或为零:我不知道你的要求是什么。 x/0
不是有效的数学运算。在微积分中,结果可以是负无穷大的正无穷大,取决于你如何接近0。
目前的意图似乎是使结果数量非常少。那么为什么不定义一个常量或者只是将结果设置为0:
DECLARE @VerySmallNumber float = 1E-8 -- ha! the exponent can be negative too
SELECT IIF(col2 = 0 OR col2 IS NULL, @VerySmallNumber, col1 / col2)