POWER (Transact-SQL)
Gibt den Wert des angegebenen Ausdrucks in der angegebenen Potenz zurück.
Transact-SQL-Syntaxkonventionen
Syntax
POWER ( float_expression , y )
Argumente
float_expression
Ein Ausdruck vom Datentyp float oder von einem Datentyp, der implizit in float konvertiert werden kann.y
Die Potenz, in die float_expression erhoben werden soll. y kann ein Ausdruck mit einem Datentyp aus der genauen numerischen oder der ungefähren numerischen Datentypkategorie sein, mit Ausnahme des bit-Datentyps.
Rückgabetypen
Gibt den gleichen Typ zurück, der in float_expression gesendet wird. Wenn ein decimal(2.0) z. B. als float_expression gesendet wird, ist das zurückgegebene Ergebnis decimal(2.0).
Beispiele
A.Rückgabe der Kubikwurzel einer Zahl mit POWER
Im folgenden Beispiel wird das Potenzieren einer Zahl mit 3 (der Kubikwurzel der Zahl) veranschaulicht.
DECLARE @input1 float;
DECLARE @input2 float;
SET @input1= 2;
SET @input2 = 2.5;
SELECT POWER(@input1, 3) AS Result1, POWER(@input2, 3) AS Result2;
Dies ist das Resultset.
Result1 Result2
---------------------- ----------------------
8 15.625
(1 row(s) affected)
B.Anzeigen der Ergebnisse einer Datentypkonvertierung mit POWER
Im folgenden Beispiel wird veranschaulicht, wie der Datentyp von float_expression beibehalten wird, was zu unerwarteten Ergebnissen führen kann.
SELECT
POWER(CAST(2.0 AS float), -100.0) AS FloatResult,
POWER(2, -100.0) AS IntegerResult,
POWER(CAST(2.0 AS int), -100.0) AS IntegerResult,
POWER(2.0, -100.0) AS Decimal1Result,
POWER(2.00, -100.0) AS Decimal2Result,
POWER(CAST(2.0 AS decimal(5,2)), -100.0) AS Decimal2Result;
GO
Dies ist das Resultset.
FloatResult IntegerResult IntegerResult Decimal1Result Decimal2Result Decimal2Result
---------------------- ------------- ------------- -------------- -------------- --------------
7.88860905221012E-31 0 0 0.0 0.00 0.00
C.Verwenden von POWER
Das folgende Beispiel gibt POWER-Ergebnisse für 2 zurück.
DECLARE @value int, @counter int;
SET @value = 2;
SET @counter = 1;
WHILE @counter < 5
BEGIN
SELECT POWER(@value, @counter)
SET NOCOUNT ON
SET @counter = @counter + 1
SET NOCOUNT OFF
END;
GO
Dies ist das Resultset.
-----------
2
(1 row(s) affected)
-----------
4
(1 row(s) affected)
-----------
8
(1 row(s) affected)
-----------
16
(1 row(s) affected)
Siehe auch
Verweis
decimal und numeric (Transact-SQL)
int, bigint, smallint und tinyint (Transact-SQL)