SQL内置Function 数学函数

数学函数

这些标量函数通常对作为参数提供的输入值执行计算,并返回一个数字值。

ABS

DEGREES

RAND

ACOS

EXP

ROUND

ASIN

FLOOR

SIGN

ATAN

LOG

SIN

ATN2

LOG10

SQUARE

CEILING

PI

SQRT

COS

POWER

TAN

COT

RADIANS

 

 

说明  算术函数(例如 ABS、CEILING、DEGREES、FLOOR、POWER、RADIANS 和 SIGN)返回与输入值相同数据类型的值。三角函数和其它函数(包括 EXP、LOG、LOG10、SQUARE 和 SQRT)将输入值投影到 float 并返回 float 值。

除了 RAND 外,所有数学函数都是确定性函数。每次用一组特定输入值调用它们时,所返回的结果相同。仅当指定种子参数时,RAND 才具有确定性。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。

1ABS

返回给定数字表达式的绝对值。

语法

ABS ( numeric_expression )

参数

numeric_expression

精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

返回类型

返回与 numeric_expression 相同的类型。

示例

下例显示了 ABS 函数对三个不同数字的效果。

SELECT ABS(-1.0), ABS(0.0), ABS(1.0)

下面是结果集:

---- ---- ----

1.0 .0   1.0

ABS 函数可能产生溢出错误,例如:

SELECT ABS(convert(int, -2147483648))

下面是错误信息:

Server: Msg 8115, Level 16, State 2

Arithmetic overflow error converting expression to type int.

2ACOS

返回以弧度表示的角度值,该角度值的余弦为给定的 float 表达式;本函数亦称反余弦。

语法

ACOS ( float_expression )

参数

float_expression

是 float 或 real 类型的表达式,其取值范围从 -1 到 1。对超过此范围的参数值,函数将返回 NULL 并且报告域错误。

返回类型

float

示例

下例返回给定角的 ACOS 值。

SET NOCOUNT OFF

DECLARE @angle float

SET @angle = -1

SELECT 'The ACOS of the angle is: ' + CONVERT(varchar, ACOS(@angle))

下面是结果集:

---------------------------------

The ACOS of the angle is: 3.14159                       

 

(1 row(s) affected)

下例将参数 @angle 设置为超出有效范围的值。

SET NOCOUNT OFF

DECLARE @angle float

SET @angle = 1.01

SELECT 'The ACOS of the angle is: ' + CONVERT(varchar, ACOS(@angle))

下面是结果集:

--------------------------------------------------------

NULL                       

 

(1 row(s) affected)

 

A domain error occurred.

3ASIN

返回以弧度表示的角度值,该角度值的正弦为给定的 float 表达式;亦称反正弦。

语法

ASIN ( float_expression )

参数

float_expression

是 float 类型的表达式,其取值范围从 -1 到 1。对超过此范围的参数值,函数将返回 NULL 并且报告域错误。

返回类型

float

示例

下例用 float 表达式返回给定角的 ASIN 值。

-- First value will be -1.01, which fails.

DECLARE @angle float

SET @angle = -1.01

SELECT 'The ASIN of the angle is: ' + CONVERT(varchar, ASIN(@angle))

GO

 

-- Next value is -1.00.

DECLARE @angle float

SET @angle = -1.00

SELECT 'The ASIN of the angle is: ' + CONVERT(varchar, ASIN(@angle))

GO

 

-- Next value is 0.1472738.

DECLARE @angle float

SET @angle = 0.1472738

SELECT 'The ASIN of the angle is: ' + CONVERT(varchar, ASIN(@angle))

GO

下面是结果集:

-------------------------

The ASIN of the angle is:                               

 

(1 row(s) affected)

 

Domain error occurred.

 

                                                        

---------------------------------

The ASIN of the angle is: -1.5708                       

 

(1 row(s) affected)

 

                                                        

----------------------------------

The ASIN of the angle is: 0.147811                      

 

(1 row(s) affected)

4ATAN

返回以弧度表示的角度值,该角度值的正切为给定的 float 表达式;亦称反正切。

语法

ATAN ( float_expression )

参数

float_expression

是 float 类型的表达式。

返回类型

float

示例

下例用 float 表达式返回给定角的 ATAN 值。

SELECT 'The ATAN of -45.01 is: ' + CONVERT(varchar, ATAN(-45.01))

SELECT 'The ATAN of -181.01 is: ' + CONVERT(varchar, ATAN(-181.01))

SELECT 'The ATAN of 0 is: ' + CONVERT(varchar, ATAN(0))

SELECT 'The ATAN of 0.1472738 is: ' + CONVERT(varchar, ATAN(0.1472738))

SELECT 'The ATAN of 197.1099392 is: ' + CONVERT(varchar, ATAN(197.1099392))

GO

下面是结果集:

                                                         

-------------------------------

The ATAN of -45.01 is: -1.54858                      

 

(1 row(s) affected)

 

--------------------------------

The ATAN of -181.01 is: -1.56527                      

 

(1 row(s) affected)

 

--------------------------------

The ATAN of 0 is: 0                             

 

(1 row(s) affected)

 

----------------------------------

The ATAN of 0.1472738 is: 0.146223                      

 

(1 row(s) affected)

 

                                                         

-----------------------------------

The ATAN of 197.1099392 is: 1.56572                       

 

(1 row(s) affected)

5ATN2

返回以弧度表示的角度值,该角度值的正切介于两个给定的 float 表达式之间;亦称反正切。

语法

ATN2 ( float_expression , float_expression )

参数

float_expression

float 数据类型的表达式。

返回类型

float

示例

下例计算给定角的 ATN2。

DECLARE @angle1 float

DECLARE @angle2 float

SET @angle1 = 35.175643

SET @angle2 = 129.44

SELECT 'The ATN2 of the angle is: ' + CONVERT(varchar,ATN2(@angle1,@angle2 ))

GO

下面是结果集:

The ATN2 of the angle is: 0.265345                      

 

(1 row(s) affected)

6CEILING

返回大于或等于所给数字表达式的最小整数。

语法

CEILING ( numeric_expression )

参数

numeric_expression

是精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

返回类型

返回与 numeric_expression 相同的类型。

示例

下面的示例显示使用 CEILING 函数的正数、负数和零值。

SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)

GO

下面是结果集:

--------- --------- -------------------------

124.00    -123.00    0.00                    

 

(1 row(s) affected)

7COS

一个数学函数,返回给定表达式中给定角度(以弧度为单位)的三角余弦值。

语法

COS ( float_expression )

参数

float_expression

是 float 类型的 expression。

返回类型

float

示例

下面的示例返回给定角度的 COS 值。

DECLARE @angle float

SET @angle = 14.78

SELECT 'The COS of the angle is: ' + CONVERT(varchar,COS(@angle))

GO

下面是结果集:

The COS of the angle is: -0.599465                     

 

(1 row(s) affected)

8COT

一个数学函数,返回给定 float 表达式中指定角度(以弧度为单位)的三角余切值。

语法

COT ( float_expression )

参数

float_expression

是 float 类型的 expression。

返回类型

float

示例

下面的示例返回给定角度的 COT 值。

DECLARE @angle float

SET @angle = 124.1332

SELECT 'The COT of the angle is: ' + CONVERT(varchar,COT(@angle))

GO

下面是结果集:

The COT of the angle is: -0.040312             

 

(1 row(s) affected)

9DEGREES

当给出以弧度为单位的角度时,返回相应的以度数为单位的角度。

语法

DEGREES ( numeric_expression )

参数

numeric_expression

精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

返回代码值

返回与 numeric_expression 相同的类型。

示例

下例以 PI/2 弧度的角度返回度数。

SELECT 'The number of degrees in PI/2 radians is: ' +

CONVERT(varchar, DEGREES((PI()/2)))

GO

下面是结果集:

The number of degrees in PI/2 radians is 90      

 

(1 row(s) affected)

10EXP

返回所给的 float 表达式的指数值。

语法

EXP ( float_expression )

参数

float_expression

是 float 类型的表达式。

返回类型

float

示例

本示例声明一个变量,同时返回所给变量 (378.615345498) 的指数值,并附有文字说明。

DECLARE @var float

SET @var = 378.615345498

SELECT 'The EXP of the variable is: ' + CONVERT(varchar,EXP(@var))

GO

下面是结果集:

The EXP of the variable is: 2.69498e+164                   

 

(1 row(s) affected)

11FLOOR

返回小于或等于所给数字表达式的最大整数。

语法

FLOOR ( numeric_expression )

参数

numeric_expression

精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

返回类型

返回与 numeric_expression 相同的类型。

示例

此示例说明正数、负数和货币值在 FLOOR 函数中的运用。

SELECT FLOOR(123.45), FLOOR(-123.45), FLOOR($123.45)

结果为与 numeric_expression 数据类型相同的计算值的整数部分。

---------      ---------     -----------

123            -124          123.0000  

12LOG

返回给定 float 表达式的自然对数。

语法

LOG ( float_expression )

参数

float_expression

是 float 数据类型的表达式。

返回类型

float

示例

下例计算给定 float 表达式的 LOG。

DECLARE @var float

SET @var = 5.175643

SELECT 'The LOG of the variable is: ' + CONVERT(varchar,LOG(@var))

GO

下面是结果集:

The LOG of the variable is: 1.64396                       

 

(1 row(s) affected)

13LOG10

返回给定 float 表达式的以 10 为底的对数。

语法

LOG10 ( float_expression )

参数

float_expression

是 float 数据类型的表达式。

返回类型

float

示例

下例计算给定变量的 LOG10。

DECLARE @var float

SET @var = 145.175643

SELECT 'The LOG10 of the variable is: ' + CONVERT(varchar,LOG10(@var))

GO

下面是结果集:

The LOG10 of the variable is: 2.16189   

 

(1 row(s) affected)

14PI

返回 PI 的常量值。

语法

PI ( )

返回类型

float

示例

本示例返回 PI 值。

SELECT PI()

GO

下面是结果集:

------------------------

3.14159265358979

 

(1 row(s) affected)

15POWER

返回给定表达式乘指定次方的值。

语法

POWER ( numeric_expression , y )

参数

numeric_expression

是精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

y

numeric_expression 的次方。y 可以是精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

返回类型

与 numeric_expression 相同。

示例

A. 使用 POWER 显示结果 0.0

本示例显示返回结果 0.0 的浮点下溢。

SELECT POWER(2.0, -100.0)

GO

下面是结果集:

------------------------------------------

0.0

 

(1 row(s) affected)

B. 使用 POWER

本示例显示 21 到 24 的 POWER 结果。

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)

16RADIANS

对于在数字表达式中输入的度数值返回弧度值。

语法

RADIANS ( numeric_expression )

参数

numeric_expression

精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

返回类型

返回与 numeric_expression 相同的类型。

示例

A.  使用 RADIANS 显示 0.0

下例返回结果 0.0,因为用于转换为弧度的数字表达式对于 RADIANS 函数太小。

SELECT RADIANS(1e-307)

GO

下面是结果集:

-------------------

0.0                     

(1 row(s) affected)

B. 使用 RADIANS

下例使用 float 表达式并返回给定角度的弧度 (RADIANS)。

-- First value is -45.01.

DECLARE @angle float

SET @angle = -45.01

SELECT 'The RADIANS of the angle is: ' +

   CONVERT(varchar, RADIANS(@angle))

GO

-- Next value is -181.01.

DECLARE @angle float

SET @angle = -181.01

SELECT 'The RADIANS of the angle is: ' +

   CONVERT(varchar, RADIANS(@angle))

GO

-- Next value is 0.00.

DECLARE @angle float

SET @angle = 0.00

SELECT 'The RADIANS of the angle is: ' +

   CONVERT(varchar, RADIANS(@angle))

GO

-- Next value is 0.1472738.

DECLARE @angle float

SET @angle = 0.1472738

SELECT 'The RADIANS of the angle is: ' +

    CONVERT(varchar, RADIANS(@angle))

GO

-- Last value is 197.1099392.

DECLARE @angle float

SET @angle = 197.1099392

SELECT 'The RADIANS of the angle is: ' +

   CONVERT(varchar, RADIANS(@angle))

GO

下面是结果集:

---------------------------------------

The RADIANS of the angle is: -0.785573                     

(1 row(s) affected)

---------------------------------------

The RADIANS of the angle is: -3.15922                      

(1 row(s) affected)

---------------------------------------

The RADIANS of the angle is: 0                             

(1 row(s) affected)

---------------------------------------

The RADIANS of the angle is: 0.00257041                     

 (1 row(s) affected)

---------------------------------------

The RADIANS of the angle is: 3.44022                       

(1 row(s) affected)

17RAND

返回 0 到1 之间的随机float 值。

语法

RAND ( [ seed ] )

参数

seed

是给出种子值或起始值的整型表达式(tinyint、smallint 或 int)。

返回类型

float

注释

在单个查询中反复调用 RAND() 将产生相同的值。

示例

下例产生 4 个通过 RAND 函数产生的不同的随机值。

DECLARE @counter smallint

SET @counter = 1

WHILE @counter < 5

   BEGIN

      SELECT RAND(@counter) Random_Number

      SET NOCOUNT ON

      SET @counter = @counter + 1

      SET NOCOUNT OFF

   END

GO

下面是结果集:

Random_Number                                        

-------------------

0.71359199321292355

 

(1 row(s) affected)

 

Random_Number                                        

-------------------

0.7136106261841817

 

(1 row(s) affected)

 

Random_Number                                        

-------------------

0.71362925915543995

 

(1 row(s) affected)

 

Random_Number                                        

-------------------

0.7136478921266981

 

(1 row(s) affected)

18ROUND

返回数字表达式并四舍五入为指定的长度或精度。

语法

ROUND ( numeric_expression , length [ , function ] )

参数

numeric_expression

精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

length

是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。

function

是要执行的操作类型。function 必须是 tinyint、smallint 或 int。如果省略 function 或 function 的值为 0(默认),numeric_expression 将四舍五入。当指定 0 以外的值时,将截断 numeric_expression。

返回类型

返回与 numeric_expression 相同的类型。

注释

ROUND 始终返回一个值。如果 length 是负数且大于小数点前的数字个数,ROUND 将返回 0。

示例

结果

ROUND(748.58, -4)

0

 

当 length 是负数时,无论什么数据类型,ROUND 都将返回一个四舍五入的 numeric_expression。

示例

结果

ROUND(748.58, -1)

750.00

ROUND(748.58, -2)

700.00

ROUND(748.58, -3)

1000.00

 

示例

A. 使用 ROUND 和估计值

下例显示两个表达式,说明使用 ROUND 函数且最后一个数字始终是估计值。

SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)

GO

下面是结果集:

----------- -----------

123.9990    124.0000   

B. 使用 ROUND 和四舍五入的近似值

下例显示四舍五入和近似值。

语句

结果

SELECT ROUND(123.4545, 2)

123.4500

SELECT ROUND(123.45, -2)

100.00

 

C. 使用 ROUND 截断

下例使用两个 SELECT 语句说明四舍五入和截断之间的区别。第一个语句四舍五入结果。第二个语句截断结果。

语句

结果

SELECT ROUND(150.75, 0)

151.00

SELECT ROUND(150.75, 0, 1)

150.00

 

19SIGN

返回给定表达式的正 (+1)、零 (0) 或负 (-1) 号。

语法

SIGN ( numeric_expression )

参数

numeric_expression

精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

返回类型

float

示例

下例返回从 -1 到 1 的 SIGN 数值。

DECLARE @value real

SET @value = -1

WHILE @value < 2

   BEGIN

      SELECT SIGN(@value)

      SET NOCOUNT ON

      SELECT @value = @value + 1

      SET NOCOUNT OFF

   END

SET NOCOUNT OFF

GO

下面是结果集:

(1 row(s) affected)

 

                        

------------------------

-1.0                    

 

(1 row(s) affected)

 

                        

------------------------

0.0                     

 

(1 row(s) affected)

 

                        

------------------------

1.0                     

 

(1 row(s) affected)

20SIN

以近似数字 (float) 表达式返回给定角度(以弧度为单位)的三角正弦值。

语法

SIN ( float_expression )

参数

float_expression

是 float 类型的表达式。

返回类型

float

示例

下例计算给定角度的 SIN 值。

DECLARE @angle float

SET @angle = 45.175643

SELECT 'The SIN of the angle is: ' + CONVERT(varchar,SIN(@angle))

GO

下面是结果集:

The SIN of the angle is: 0.929607                      

 

(1 row(s) affected)

21SQUARE

返回给定表达式的平方。

语法

SQUARE ( float_expression )

参数

float_expression

是 float 类型的表达式。

返回类型

float

示例

下例返回半径为 1 英寸、高为 5 英寸的圆柱容积。

DECLARE @h float, @r float

SET @h = 5

SET @r = 1

SELECT PI()* SQUARE(@r)* @h AS 'Cyl Vol'

下面是结果:

Cyl Vol

--------------------------

15.707963267948966

22SQRT

返回给定表达式的平方根。

语法

SQRT ( float_expression )

参数

float_expression

是 float 类型的表达式。

返回类型

float

示例

下例返回 1.00 到 10.00 之间的数字的平方根。

DECLARE @myvalue float

SET @myvalue = 1.00

WHILE @myvalue < 10.00

   BEGIN

      SELECT SQRT(@myvalue)

      SELECT @myvalue = @myvalue + 1

   END

GO

下面是结果集:

------------------------

1.0                     

------------------------

1.4142135623731         

------------------------

1.73205080756888        

------------------------

2.0                     

------------------------

2.23606797749979        

------------------------

2.44948974278318        

------------------------

2.64575131106459        

------------------------

2.82842712474619        

------------------------

3.0

23TAN

返回输入表达式的正切值。

语法

TAN ( float_expression )

参数

float_expression

float 或 real 类型的表达式,解释为弧度数。

返回类型

float

示例

下例返回 PI()/2 的正切值。

SELECT TAN(PI()/2)

下面是结果集:

----------------------

1.6331778728383844E+16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值