当我SQRT(X)
一个值时,我收到一个无效的浮点运算错误。
在什么原因下会发生此错误,我该如何选择X
的值以防止发生此错误?
在某些情况下,X
值是库存商品的平均销售量。
我尝试SQRT(ABS(x))
时没有运气。
谢谢
答案 0 :(得分:1)
据我所知,SQRT(X)给出错误“发生无效的浮点运算”的唯一情况是X为负数时。但是,您已经通过使用如下的ABS函数来解决此问题:SQRT(ABS(X))。
因此,我的猜测是该错误实际上并非来自SQRT函数,而是来自附近的其他地方。让我们看看您给出的表达式:
SQRT(2*50*ABS(X)) / NULLIF(B*0.2/12,0))
该表达式显然带有一个右括号。这使我认为它只是较大表达式的一部分,并且较大表达式是错误的原因。
例如,如果B为0,则NULLIF()变为NULL。您将其除以NULL,从而得到NULL结果。现在,您如何处理此结果?也许还有其他一些计算不能很好地处理NULL?
这里有很多猜测。如果我的猜测不能为您指明正确的方向,那么了解错误的B和X值以及包含该表达式的完整语句会很有帮助。
答案 1 :(得分:0)
有一个T_SQL命令可以计算变量的类型。您可以在计算变量的平方根之前查看其类型。 命令是:
SQL_VARIANT_PROPERTY
另一方面,很抱歉告诉您,我不知道它是否适用于2018版本,因为我没有办法检查它。但是您可以找到适用于您的SQL Server版本的等效命令。 希望能有所帮助。