POWER (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

返回指定表达式的指定幂的值。

Transact-SQL 语法约定

语法

POWER ( float_expression , y )  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

自变量

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)