Возведение десятичной дроби в десятичную степень в SQLServer

Я пишу запрос SQLServer в Microsoft Azure, в котором мне нужно повысить мощность маленького десятичного числа (0 ‹ x ‹ 10) до 4,5. например 3,1 ^ 4,5

Я написал запрос так:

case when a.avgRating = null then (6-r.WebRating)^4.5 else a.avgRating end AS avgRating

И я получаю следующую ошибку:

Operand data type decimal is invalid for '^' operator.

Я не уверен, относится ли это к базе (6-WebRating) или к показателю степени (4.5), но в любом случае я не уверен, как это сделать в SQLServer. Работает в Excel, между прочим :)


person Scott    schedule 18.12.2014    source источник


Ответы (2)


Вместо этого вам нужно использовать POWER. А также вы должны использовать не somecolumn = NULL, а somecolumn IS NULL:

CASE 
    WHEN a.avgRating IS NULL THEN POWER(6-r.WebRating,4.5) 
    ELSE a.avgRating 
END AS avgRating
person Lamak    schedule 18.12.2014
comment
На всякий случай стоит упомянуть, что ^ является побитовым исключающим или оператором, а не возведением в степень. - person Gordon Linoff; 18.12.2014
comment
Спасибо за быстрый ответ! - person Scott; 18.12.2014

В общем, если у вас есть функции exp и log, у вас есть a^b:

a^b = exp(b * log(a))
person mbroshi    schedule 18.12.2014