• 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

     

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    How To Change Database Name
    Oracle备份与恢复案例
    Linux 下安装 Oracle9i
    在 Linux x86 上安装 Oracle 数据库 10g_1
    在 Linux x86 上安装 Oracle 数据库 10g_2
    Oracle9i数据库DataGuard实施及维护手册2
    在 Linux x86 上安装 Oracle 数据库 10g_3
    流程企业(钢铁企业)的制造执行系统
    理解和使用Oracle分析工具LogMiner
    Oracle9i数据库Data Guard实施及维护手册 1
  • 原文地址:https://www.cnblogs.com/Athrun/p/556582.html
Copyright © 2020-2023  润新知