2016-02-05 3 views
0

Я есть проблемы с кодом, когда я бегу я получаюнедопустимая операция с плавающей точкой произошла POWER в SQL Server

An invalid floating point operation occurred

Мой код выглядит следующим образом:

select POWER(ISNULL(value1,0)/NULLIF(value2,0) , 12/CONVERT(numeric(6,2),value3)) 

где значение1 (тип данных: деньги), значение2 (тип данных: деньги), значение3 (тип данных: int) - это столбцы в моей базе данных.

Я получаю эту ошибку, когда value1 = Null, значение2 = 164083520,00 и value3 = 177

Странно, что, если я заменю с этими числами я получаю правильный результат, но не во время выполнения этого.

Любые идеи?

+1

Я попробовал эти точные значения и тип данных и не получить ошибку –

+0

Это не дает ошибку: DECLARE @t таблицы (value1 денег, значение2 денег, Value3 INT) ВСТАВИТЬ @t значений (NULL, 164083520,00, 177) ВЫБОР МОЩНОСТИ (ISNULL (value1,0)/NULLIF (value2,0), 12/ПРЕОБРАЗОВАНИЯ (числовое) (6,2, значение3)) FROM @t –

+2

Имейте в виду, что даже если у вас есть предложение WHERE, h, что вы думаете, это оценивает это выражение только для этих конкретных значений, на самом деле это не так - возможно, это попытка оценить это выражение в других строках таблицы ... – AakashM

ответ

0

Выполнение следующего сценария Я не получаю никаких ошибок на SQL Server 2012. AFAICT вы также не получите ни на какие другие версии. У вас должно быть вычисление где-то еще, что приводит к недействительной операции с плавающей запятой.

DECLARE @values TABLE(value1 MONEY,value2 MONEY,value3 INT); 
INSERT INTO @values(value1,value2,value3)VALUES(NULL,164083520.00,177); 

SELECT 
    result=POWER(ISNULL(value1,0)/NULLIF(value2,0), 12.0/CONVERT(numeric(6,2),value3)) 
FROM 
    @values; 

Результат

0.00 
Смежные вопросы