分享方式:


POWER (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲

將指定之運算式的值傳回給指定的乘冪。

Transact-SQL 語法慣例

語法

POWER ( float_expression , y )  

引數

float_expression
float 類型或能夠隱含轉換成 float 類型的運算式

y
float_expression 相乘的乘冪。 y 可為精確數值或近似數值資料類型類別目錄的運算式,但 bit 資料類型除外。

傳回型別

傳回型別取決於 float_expression 的輸入類型:

輸入類型 傳回類型
floatreal float
decimal(p, s) decimal(38, s)
intsmallinttinyint int
bigint bigint
moneysmallmoney money
bitcharncharvarcharnvarchar float

如果結果不符合傳回型別,就會發生算術溢位錯誤。

範例

A. 使用 POWER 傳回數字的立方

下列範例示範將某個數字自乘 3 次 (數字的立方)。

DECLARE @input1 FLOAT;  
DECLARE @input2 FLOAT;  
SET @input1= 2;  
SET @input2 = 2.5;  
SELECT POWER(@input1, 3) AS Result1, POWER(@input2, 3) AS Result2;  

結果集如下所示。

Result1                Result2  
---------------------- ----------------------  
8                      15.625  
  
(1 row(s) affected)  

B. 利用 POWER 來顯示資料類型轉換的結果

下列範例示範 float_expression 如何保留可能會傳回非預期結果的資料類型。

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  

結果集如下所示。

FloatResult            IntegerResult IntegerResult Decimal1Result Decimal2Result Decimal2Result  
---------------------- ------------- ------------- -------------- -------------- --------------  
7.88860905221012E-31   0             0             0.0            0.00           0.00  

C. 使用 POWER

下列範例會傳回 POWER2 結果。

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  

結果集如下所示。

-----------   
2             
  
(1 row(s) affected)  
  
-----------   
4             
  
(1 row(s) affected)  
  
-----------   
8             
  
(1 row(s) affected)  
  
-----------   
16            
  
(1 row(s) affected)  

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

D:使用 POWER 傳回數字的立方

下列範例示範傳回 2.0 的 3 次方 POWER 結果。

SELECT POWER(2.0, 3);  

結果集如下所示。

------------ 
8.0

另請參閱

decimal 和 numeric (Transact-SQL)
float 和 real (Transact-SQL)
int、bigint、smallint 和 tinyint (Transact-SQL)
數學函數 (Transact-SQL)
money 和 smallmoney (Transact-SQL)