【发布时间】:2015-01-14 17:34:49
【问题描述】:
我在用户函数中使用 SQL Server 的 POWER 函数,当底数为负数且指数为小数时,我遇到了错误,
[MICROSOFT][ODBC SQL SERVER DRIVER][SQL SERVER]发生了无效的浮点操作。
在现实世界中可以将负基数提升为幂,所以这是 SQL 错误吗?如果是这样,有解决办法吗?
例子:
SELECT POWER(-.2, 9.7)
问题的进一步细化
-- These work
SELECT
POWER(-.2, 9)
, POWER(.2, 9.7);
-- This does not
SELECT
POWER(-.2, 9.7);
-- POWER on BOL http://msdn.microsoft.com/en-us/library/ms174276.aspx
-- Returns the same type as submitted in float_expression
-- Perhaps something is awry with typing
DECLARE
@f decimal(35,30) = -.2
, @fout decimal(35,30);
-- This still fails with "An invalid floating point operation occurred"
SELECT
@fout = POWER(@f, 9.7);
【问题讨论】:
-
SQL_Server 实现很好。 windows 计算器坏了。
-
FWIW,Windows 7 上的计算器给出“无效输入”错误。
-
过失,我编辑了问题并添加了进一步的细化部分,其中包括 windows 计算器行。 @DStanley 我也失败了 Windows 计算器,因为它将
-应用于.2^9.7的结果
标签: sql sql-server