• Oracle 11g Release 1 (11.1) 单行函数——数字函数


    http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions001.htm#i88893

    本文内容

    • 单行函数
    • 数字函数
    • 演示数字函数

    单行函数


    单行函数用于查询表或视图的每个行返回一个结果行。单行函数可以用在 select 列表、WHERE 子句、START WITHCONNECT BY 子句,以及 HAVING 子句。

    单行函数包括:

    • 数字函数
    • 字符函数
    • NLS 字符函数
    • 日期函数
    • 比较函数
    • 转换函数
    • 大对象函数
    • 集合函数
    • 层级函数
    • 数据挖据函数
    • XML 函数
    • 编码和解码函数
    • NULL 相关函数
    • 环境和标识函数

    除了单行函数,还有聚合函数、分析函数(Analytic Functions)、对象引用函数(Object Reference Functions)和模型函数(Model Functions)。

    本文主要说明 Oracle 11g Release 1 (11.1) 数字函数。

    数字函数


    数字函数接受数字输入,并返回数字值。

    • 大多数返回 NUMBER 值的数字函数,精确到 38 位十进制数字。
    • 超越函数,如 COSCOSHEXPLNLOGSINSINHSQRTTANTANH 精确到 36 位十进制。
    • ACOSASINATANATAN2,这些超越函数精确到 30 位十进制。

    函数如下表所示。

    函数

    描述

    ABS(n)

    返回 n 的绝对值。n 为任何数字类型,或可以被隐式转换成数字类型的非数字类型。

    COS(n)

    ACOS(n)

    COSH(n)

    • COS 返回 n 的余弦

    • ACOS 返回 n 的反余弦。n 取值范围 [-1,1],返回值在 [0,pi]

    • COSH 返回 n 的双曲余弦

    SIN(n)

    ASIN(n)

    SINH(n)

    • SIN 正弦

    • ASIN 返回 n 的反正弦。n 取值范围 [-1,1],返回值在 [-pi/2,pi/2]

    • SINH 双曲正弦

    TAN(n)

    ATAN(n)

    ATAN2(n1,n2)

    TANH(n)

    • TAN 正切

    • ATAN 返回 n 的反正切。n 值任意,返回值 [-pi/2,pi/2]

    • ATAN2 等价于 ATAN(n1/n2)

    • TANH 双曲正切

    BITAND(exp1,exp2)

    根据表达式的二进制,按位取与

    CEIL(n)

    FLOOR(n)

    ROUND(n)

    ROUND(n, integer)

    TRUNC (n1)

    TRUNC (n1,n2)

    • CEIL 向上取整。返回 n 最大的整数

    • FLOOR 向下取整。返回 n 最小的整数

    • ROUND 四则五入

    • TRUNC 截取

    EXP(n)

    POWER(n2,n1)

    • EXP 返回以 e 为底的指数。其中,e 为 2.71828183...。返回类型与 n 相同

    • POWER 指数。n2 的 n1 次幂。n2 和 n1 为任意数字,若 n2 是负数,则 n1 必须是整数

    LN(n)

    LOG(n2,n1)

    • LN 自然对数。返回以 e底 n 的对数。n 取值范围大于 0

    • LOG 对数。返回以 n2 为底 n1 的对数。n1 为任何非0或1的正数,n2 为任何正数

    MOD(n2,n1)

    模。n2 除以 n1 的余数。若 n1 为0,则返回 n2。

    NANVL(n2,n1)

    该函数仅对 BINARY_FLOATBINARY_DOUBLE 类型的浮点数有用。它指示 Oracle 数据库,若 n2 是 NaN(非数字),则返回 n1。若 n2 不是 NaN,则返回 n2。

    REMAINDER(n2,n1)

    返回 n2 除以 n1 的余数

    SIGN(n)

    返回 n 的符号。

    对于 NUMBER 类型,符号为:

    • 若 n<0,则为 -1

    • 若 n=0,则为 0

    • 若 n>0,则为 1

    对于 BINARY_FLOATBINARY_DOUBLE,符号为:

    • 若 n<0,则为 -1

    • 若 n>=0 或 n=NaN,则为 +1

    SQRT(n)

    平方根

    WIDTH_BUCKET(

    expr,

    min_value,

    max_value,

    num_buckets)

    该函数让你构造等宽直方图,直方图的范围被划分成相同大小的间隔。而 NTILE 函数创建等高直方图。理想的情况下,每个桶是一个实数线的封闭开区间。例如,一个桶可以被分配到 10.00 和 19.999...... 之间,记做 [10,20)。

    演示数字函数


    示例 1:演示 BITAND 函数。

    SQL> SELECT BITAND(6, 3) as "Decimal BITAND",
      2         BITAND(BIN_TO_NUM(1, 1, 0), BIN_TO_NUM(0, 1, 1)) as "Binary BITAND"
      3    FROM DUAL;
     
    Decimal BITAND Binary BITAND
    -------------- -------------
                 2             2
     
    SQL>

    示例 2:演示 NANVL 函数。

    先创建相关表 float_point_deom,并插入两条数据。如下所示:

    CREATE TABLE float_point_demo
      (dec_num NUMBER(10,2), bin_double BINARY_DOUBLE, bin_float BINARY_FLOAT);
     
    INSERT INTO float_point_demo VALUES (1234.56, 1234.56, 1234.56);
     
    Insert INTO float_point_demo VALUES (0, 'NaN', 'NaN');
     
    SELECT * FROM float_point_demo;
     
       DEC_NUM BIN_DOUBLE  BIN_FLOAT
    ---------- ---------- ----------
       1234.56 1.235E+003 1.235E+003
             0        Nan        Nan

    最后演示 NANVL 函数。如下所示:

    SQL> SELECT bin_float, NANVL(bin_float,0)
      2  FROM float_point_demo;
     
     BIN_FLOAT NANVL(BIN_FLOAT,0)
    ---------- ------------------
    1.235E+003         1.235E+003
           Nan                  0
     
    SQL>

    示例 3:演示 REMAINDER 函数。在示例 2 中创建的表 float_point_demo 基础上演示 REMAINDER 函数。

    SQL> SELECT bin_float, bin_double, REMAINDER(bin_float, bin_double)
      2  FROM float_point_demo;
     
     BIN_FLOAT BIN_DOUBLE REMAINDER(BIN_FLOAT,BIN_DOUBLE)
    ---------- ---------- -------------------------------
    1.235E+003 1.235E+003                      5.859E-005
     
    SQL>

    示例 4:演示 SIGN 函数。

    SQL> SELECT SIGN(-15), SIGN(0), SIGN(15) FROM DUAL;
     
     SIGN(-15)    SIGN(0)   SIGN(15)
    ---------- ---------- ----------
            -1          0          1
     
    SQL>

    示例 5:演示 WIDTH_BUCKET 函数。

    SQL> SELECT customer_id, cust_last_name, credit_limit, 
      2  WIDTH_BUCKET(credit_limit, 100, 5000, 10) "Credit Group"
      3  FROM customers WHERE nls_territory = 'SWITZERLAND'
      4  ORDER BY "Credit Group", customer_id, cust_last_name, credit_limit;
     
    CUSTOMER_ID CUST_LAST_NAME       CREDIT_LIMIT Credit Group
    ----------- -------------------- ------------ ------------
            825 Dreyfuss                      500            1
            826 Barkin                        500            1
            827 Siegel                        500            1
            853 Palin                         400            1
            843 Oates                         700            2
            844 Julius                        700            2
            835 Eastwood                     1200            3
            836 Berenger                     1200            3
            837 Stanton                      1200            3
            840 Elliott                      1400            3
            841 Boyer                        1400            3
            842 Stern                        1400            3
            848 Olmos                        1800            4
            849 Kaurusmdki                   1800            4
            828 Minnelli                     2300            5
            829 Hunter                       2300            5
            850 Finney                       2300            5
            851 Brown                        2300            5
            852 Tanner                       2300            5
            830 Dutt                         3500            7
            831 Bel Geddes                   3500            7
            832 Spacek                       3500            7
            833 Moranis                      3500            7
            834 Idle                         3500            7
            838 Nicholson                    3500            7
            839 Johnson                      3500            7
            845 Fawcett                      5000           11
            846 Brando                       5000           11
            847 Streep                       5000           11
     
    SQL>

    术语英文

    以下英文可以帮助阅读英文资料。

      • 单行函数 - Single-row functions

      • 聚合函数 - Aggregate Functions

      • 超越函数 - transcendental functions

      • 绝对值 - absolute value

      • 余弦 - cosine

      • 反余弦 - arc cosine

      • 双曲余弦 - hyperbolic cosine

      • 正弦 - sine

      • 反正弦 - arc sine

      • 双曲正弦 - hyperbolic sine

      • 正切 - tangent

      • 反正切 - arc tangent

      • 双曲正切 - hyperbolic tangent

      • 指数 – exponent

      • e 的 n 次幂 - e raised to the nth power

      • 自然对数 - natural logarithm

      • 对数 – logarithm

      • 对数的底 - base

      • 余数 - remainder

      • 平方根 - square root

      • 负数/正数 - negative/postive

      • 除 - divide

    • 相关阅读:
      hdu 6068 Classic Quotation
      hdu 6071 Lazy Running
      数论基础--质因数分解
      喵哈哈村的魔法考试 Round #10 (Div.2) E
      喵哈哈村的魔法考试 Round #10 (Div.2) D
      喵哈哈村的魔法考试 Round #10 (Div.2) C
      喵哈哈村的魔法考试 Round #10 (Div.2) B
      喵哈哈村的魔法考试 Round #10 (Div.2) A
      L1-025. 正整数A+B
      L2-015. 互评成绩
    • 原文地址:https://www.cnblogs.com/liuning8023/p/2601804.html
    Copyright © 2020-2023  润新知