Oracle 11g Release 1 (11.1) 单行函数——数字函数
http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions001.htm#i88893
本文内容
- 单行函数
- 数字函数
- 演示数字函数
单行函数
单行函数用于查询表或视图的每个行返回一个结果行。单行函数可以用在 select 列表、WHERE 子句、START WITH 和 CONNECT BY 子句,以及 HAVING 子句。
单行函数包括:
- 数字函数
- 字符函数
- NLS 字符函数
- 日期函数
- 比较函数
- 转换函数
- 大对象函数
- 集合函数
- 层级函数
- 数据挖据函数
- XML 函数
- 编码和解码函数
- NULL 相关函数
- 环境和标识函数
除了单行函数,还有聚合函数、分析函数(Analytic Functions)、对象引用函数(Object Reference Functions)和模型函数(Model Functions)。
本文主要说明 Oracle 11g Release 1 (11.1) 数字函数。
数字函数
数字函数接受数字输入,并返回数字值。
- 大多数返回 NUMBER 值的数字函数,精确到 38 位十进制数字。
- 超越函数,如 COS、COSH、EXP、LN、LOG、SIN、SINH、SQRT、TAN 和 TANH 精确到 36 位十进制。
- 如 ACOS、ASIN、ATAN 和 ATAN2,这些超越函数精确到 30 位十进制。
函数如下表所示。
函数 | 描述 |
ABS(n) | 返回 n 的绝对值。n 为任何数字类型,或可以被隐式转换成数字类型的非数字类型。 |
COS(n) ACOS(n) COSH(n) |
|
SIN(n) ASIN(n) SINH(n) |
|
TAN(n) ATAN(n) ATAN2(n1,n2) TANH(n) |
|
BITAND(exp1,exp2) | 根据表达式的二进制,按位取与 |
CEIL(n) FLOOR(n) ROUND(n) ROUND(n, integer) TRUNC (n1) TRUNC (n1,n2) |
|
EXP(n) POWER(n2,n1) |
|
LN(n) LOG(n2,n1) |
|
MOD(n2,n1) | 模。n2 除以 n1 的余数。若 n1 为0,则返回 n2。 |
NANVL(n2,n1) | 该函数仅对 BINARY_FLOAT 或 BINARY_DOUBLE 类型的浮点数有用。它指示 Oracle 数据库,若 n2 是 NaN(非数字),则返回 n1。若 n2 不是 NaN,则返回 n2。 |
REMAINDER(n2,n1) | 返回 n2 除以 n1 的余数 |
SIGN(n) | 返回 n 的符号。 对于 NUMBER 类型,符号为:
对于 BINARY_FLOAT 和 BINARY_DOUBLE,符号为:
|
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