為了方便測試,創(chuàng)建了dual表捂掰,該表只有一個字段以及只有一行數(shù)據(jù)州邢,建表語句如下:
CREATE TABLE dual (
x INT
)
round(DOUBLE a)袖瞻,返回類型:DOUBLE
返回數(shù)字 a 四舍五入后的值
- select round(1.5) from dual; -- 結果為 2
- select round(1.1) from dual; -- 結果為 1
round(DOUBLE a, INT d),返回類型:DOUBLE
返回數(shù)字 a 四舍五入到小數(shù)點后 d 位的值
- select round(1.15, 1) from dual; -- 結果為 1.2
- select round(1.12, 1) from dual; -- 結果為 1.1
- select round(1.12, 3) from dual; -- 結果為 1.12
- select round(1.12, 0) from dual; -- 結果為 1.0
- select round(1.12, -1) from dual; -- 結果為 0.0
bround(DOUBLE a)煞躬,返回類型:DOUBLE
返回數(shù)字 a 高斯舍入后的值
高斯舍入也稱銀行家舍入肛鹏,簡單的說就是四舍六入五考慮逸邦,五后非空就進一,五后為空看奇偶在扰,五前為偶應舍去缕减,五前為奇要進一
- -- 四舍
- select bround(1.4) from dual; -- 結果為 1.0
- -- 六入
- select bround(1.6) from dual; -- 結果為 2.0
- -- 五后非空就進一
- select bround(1.51) from dual; -- 結果為 2.0
- -- 五前為偶應舍去
- select bround(2.5) from dual; -- 結果為 2.0
- -- 五前為奇要進一
- select bround(3.5) from dual; -- 結果為 4.0
bround(DOUBLE a, INT d),返回類型:DOUBLE
返回數(shù)字 a 高斯舍入到小數(shù)點后 d 位的值
- -- 四舍
- select bround(1.14, 1) from dual; -- 結果為 1.1
- -- 六入
- select bround(1.16, 1) from dual; -- 結果為 1.2
- -- 五后非空就進一
- select bround(1.151, 1) from dual; -- 結果為 1.2
- -- 五前為偶應舍去
- select bround(1.25, 1) from dual; -- 結果為 1.2
- -- 五前為奇要進一
- select bround(1.35, 1) from dual; -- 結果為 1.4
floor(DOUBLE a)芒珠,返回類型:BIGINT
對數(shù)字 a 向下取整
- select floor(1.1) from dual; -- 結果為 1
- select floor(1.6) from dual; -- 結果為 1
- select floor(-1.1) from dual; -- 結果為 -2
- select floor(-1.6) from dual; -- 結果為 -2
ceil(DOUBLE a), ceiling(DOUBLE a)桥狡,返回類型:BIGINT
對數(shù)字 a 向上取整,ceil同ceiling
- select ceil(1.1) from dual; -- 結果為 2
- select ceil(1.6) from dual; -- 結果為 2
- select floor(-1.1) from dual; -- 結果為 -1
- select floor(-1.6) from dual; -- 結果為 -1
rand(), rand(INT seed)皱卓,返回類型:DOUBLE
如果?seed 不指定裹芝,則返回0到1之間的隨機數(shù),如:
- select rand() from dual; -- 結果為 0.9811062452094043
如果 seed 指定了好爬,隨機數(shù)是確定的局雄,如:
- select rand(2) from dual; -- 結果為 0.7311469360199058
- select rand(2020) from dual; -- 結果為 0.6188119599189963
- select rand(20201231) from dual; -- 結果為 0.9412005456293369
一般使用Unix時間戳作為seed
exp(DOUBLE a), exp(DECIMAL a),返回類型:DOUBLE
返回 e 的 a 次方
- select exp(1) from dual; -- 結果為 2.718281828459045
- select exp(1.5) from dual; -- 結果為 4.4816890703380645
- select exp(2) from dual; -- 結果為 7.38905609893065
- select exp(0) from dual; -- 結果為 1.0
- select exp(-1) from dual; -- 結果為 0.36787944117144233
ln(DOUBLE a), ln(DECIMAL a)存炮,返回類型:DOUBLE
返回以 e 為底炬搭,a 的對數(shù)
- select ln(0) from dual; -- 結果為 NULL
- select ln(1) from dual; -- 結果為 0.0
- select ln(2) from dual; -- 結果為 0.6931471805599453
- select ln(2.718281828459045) from dual; -- 結果為 1.0
log10(DOUBLE a), log10(DECIMAL a),返回類型:DOUBLE
返回以 10 為底穆桂,a 的對數(shù)
- select log10(1) from dual; -- 結果為 0.0
- select log10(10) from dual; -- 結果為 1.0
- select log10(0.1) from dual; -- 結果為 -1.0
log2(DOUBLE a), log2(DECIMAL a)宫盔,返回類型:DOUBLE
返回以 2 為底,a 的對數(shù)
- select log10(1) from dual; -- 結果為 0.0
- select log10(10) from dual; -- 結果為 1.0
- select log10(0.1) from dual; -- 結果為 -1.0
log(DOUBLE base, DOUBLE a)享完,log(DECIMAL base, DECIMAL a)灼芭,返回類型:DOUBLE
返回以 base 為底,a 的對數(shù)
- select log(1.1, 1.21) from dual; -- 結果為 1.9999999999999982
- select log(2, 4) from dual; -- 結果為 2.0
- select log(3.1, 5) from dual; -- 結果為 1.4225162708181491
pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p)般又,返回類型:DOUBLE
返回 a 的 p 次方
- select pow(-1, 2) from dual; -- 結果為 1.0
- select pow(0, 1.21) from dual; -- 結果為 0.0
- select pow(1.1, 2) from dual; -- 結果為 1.2100000000000002
sqrt(DOUBLE a), sqrt(DECIMAL a)彼绷,返回類型:DOUBLE
返回 a 的 平方根
- select sqrt(4) from dual; -- 結果為 2.0
- select sqrt(1.21) from dual; -- 結果為 1.1
- select sqrt(-1) from dual; -- 結果為 NULL
bin(BIGINT a),返回類型:STRING
返回 a 的 二進制表達式
- select bin(-1024) from dual; -- 結果為 1111111111111111111111111111111111111111111111111111110000000000
- select bin(-1) from dual; -- 結果為 1111111111111111111111111111111111111111111111111111111111111111
- select bin(1) from dual; -- 結果為 1
- select bin(1024) from dual; -- 結果為 10000000000
hex(BIGINT a) hex(STRING a) hex(BINARY a)茴迁,返回類型:STRING
如果參數(shù) a 是整數(shù)寄悯,則返回十六進制表達式,如:
- select hex(16) from dual; -- 結果為 10
- select bin(-1024) from dual; -- 結果為
- select bin(-1024) from dual; -- 結果為
- select bin(-1024) from dual; -- 結果為
如果參數(shù) a 是字符串堕义,則逐一將字符串中的每個字符對應的ASCII碼以十六進制表示并返回猜旬,如:
- select hex(16) from dual; -- 結果為 10
- select hex(11) from dual; -- 結果為 B
- select hex(-1) from dual; -- 結果為 FFFFFFFFFFFFFFFF
unhex(STRING a),返回類型:STRING
hex的逆函數(shù)倦卖,以十六進制解釋參數(shù) a 洒擦,并進行ASCII轉換,返回對應的字符
- select unhex('41') from dual; -- 結果為 A
- select unhex('42') from dual; -- 結果為 B
- select unhex('4242') from dual; -- 結果為 BB
conv(BIGINT num, INT from_base, INT to_base), conv(STRING num, INT from_base, INT to_base)怕膛,返回類型:STRING
將數(shù)字 num 或者字符串 num 從 from_base 進制轉換到 to_base 進制
- select conv('1024', 10, 2) from dual; -- 結果為 10000000000
- select conv(1024, 10, 2) from dual; -- 結果為 10000000000
- select conv(10000000000, 2, 10) from dual; -- 結果為 1024
- select conv('A', 16, 10) from dual; -- 結果為 1
abs(DOUBLE a)熟嫩,返回類型:DOUBLE
返回 a 的絕對值
- select abs('-1.024') from dual; -- 結果為 1.024
- select abs('1.024') from dual; -- 結果為 1.024
pmod(INT a, INT b), pmod(DOUBLE a, DOUBLE b),返回類型:INT or DOUBLE
返回 a 模 b 的值褐捻,pmod(a, b) 同 a % b
- select pmod(10, 3) from dual; -- 結果為 1
- select 10 % 3 from dual; -- 結果為 1
- select pmod(10.1, 2.5) from dual; -- 結果為 0.09999999999999964
- select 10.1 % 2.5 from dual; -- 結果為 0.09999999999999964
- select pmod(10, 2.5) from dual; -- 結果為 0.0
sin(DOUBLE a), sin(DECIMAL a)邦危,返回類型:DOUBLE
返回 a 的正弦值(a以弧度為單位洋侨,1弧度(rad)=57.29578度(°))
- select sin(1) from dual; -- 結果為 0.8414709848078965
- select sin(1 / 57.29578 * 90) from dual; -- 結果為 0.9999999999999999
asin(DOUBLE a), asin(DECIMAL a),返回類型:DOUBLE
返回 a 的反正弦值(-1<=a<=1)
- select asin(0.8414709848078965) from dual; -- 結果為 1.0
- select asin(1) * 57.29578 from dual; -- 結果為 90.0000007648485
- select asin(10) from dual; -- 結果為 NaN
cos(DOUBLE a), cos(DECIMAL a)倦蚪,返回類型:DOUBLE
返回 a 的余弦值
- select cos(1) from dual; -- 結果為 0.5403023058681398
- select cos(1 / 57.29578 * 120) from dual; -- 結果為 -0.4999999845857585
acos(DOUBLE a), acos(DECIMAL a)希坚,返回類型:DOUBLE
返回 a 的反余弦值
- select acos(0.5403023058681398) from dual; -- 結果為 1.0
- select acos(0.5) * 57.29578 from dual; -- 結果為 60.00000050989901
tan(DOUBLE a), tan(DECIMAL a),返回類型:DOUBLE
返回 a 的正切值
- select tan(1) from dual; -- 結果為 1.5574077246549023
- select tan(1 / 57.29578 * 45) from dual; -- 結果為 0.9999999866508755
atan(DOUBLE a), atan(DECIMAL a)陵且,返回類型:DOUBLE
返回 a 的反正切值
- select atan(1.5574077246549023) from dual; -- 結果為 1.0
- select atan(1) * 57.29578 from dual; -- 結果為 45.00000038242425
degrees(DOUBLE a), degrees(DECIMAL a)裁僧,返回類型:DOUBLE
弧度(rad)轉為度(°):1弧度(rad)=57.29577951308232度(°)
- select degrees(1) from dual; -- 結果為 57.29577951308232
radians(DOUBLE a), radians(DOUBLE a),返回類型:DOUBLE
度(°)轉為弧度(rad)
- select radians(57.29577951308232) from dual; -- 結果為 1.0
- select radians(90) from dual; -- 結果為 1.5707963267948966
positive(INT a), positive(DOUBLE a)慕购,返回類型:INT or DOUBLE
返回 a
- select positive(1) from dual; -- 結果為 1
- select positive(-1) from dual; -- 結果為 -1
- select positive(1.024) from dual; -- 結果為 1.024
negative(INT a), negative(DOUBLE a)聊疲,返回類型:INT or DOUBLE
返回 -a
- select negative(1) from dual; -- 結果為 -1
- select negative(-1) from dual; -- 結果為 1
- select negative(1.024) from dual; -- 結果為 -1.024
sign(DOUBLE a), sign(DECIMAL a),返回類型:DOUBLE or INT
如果 a 是正數(shù)沪悲,返回 1.0获洲;如果 a 是負數(shù),返回 -1.0殿如;如果 a 是 0贡珊,返回 0.0
- select sign(2) from dual; -- 結果為 1.0
- select sign(-2) from dual; -- 結果為 -1.0
- select sign(0) from dual; -- 結果為 0.0
- select sign(0) from dual; -- 結果為 0.0
e(),返回類型:DOUBLE
返回自然常數(shù) e 的值
- select e() from dual; -- 結果為 2.718281828459045
pi()涉馁,返回類型:DOUBLE
返回圓周率 Pi 的值
- select pi() from dual; -- 結果為 3.141592653589793
factorial(INT a)门岔,返回類型:BIGINT
返回 a 的階乘(n!=1×2×3×...×(n-1)×n)
- select factorial(3) from dual; -- 結果為 6
- select factorial(4) from dual; -- 結果為 24
cbrt(DOUBLE a),返回類型:DOUBLE
返回 a 的立方根
- select cbrt(8) from dual; -- 結果為 2.0
- select cbrt(1.331) from dual; -- 結果為 1.1
shiftleft(TINYINT|SMALLINT|INT a, INT b)烤送,shiftleft(BIGINT a, INT b)寒随,返回類型:INT or BIGINT
按位左移
- select shiftleft(1, 1) from dual; -- 結果為 2
- select shiftleft(1, 2) from dual; -- 結果為 4
- select shiftleft(1024) from dual; -- 結果為 111111
shiftright(TINYINT|SMALLINT|INT a, INT b),shiftright(BIGINT a, INT b)帮坚,返回類型:INT or BIGINT
按位右移
- select shiftright(1, 1) from dual; -- 結果為 0
- select shiftright(1, 1) from dual; -- 結果為 0
- select shiftright(1024, 1) from dual; -- 結果為 512
- select shiftright(1024, 0) from dual; -- 結果為 1024
- select shiftright(1024, -1) from dual; -- 結果為 0
shiftrightunsigned(TINYINT|SMALLINT|INT a, INT b)妻往,shiftrightunsigned(BIGINT a, INT b),返回類型:DOUBLE
按位無符號右移
- select shiftrightunsigned(2, 1) from dual; -- 結果為 1
- select shiftrightunsigned(1, 1) from dual; -- 結果為 0
- select shiftrightunsigned(0, 1) from dual; -- 結果為 0
- select shiftrightunsigned(-1, 1) from dual; -- 結果為 2147483647
- select shiftrightunsigned(-2, 1) from dual; -- 結果為 2147483647
greatest(T v1, T v2, ...)试和,返回類型:T
返回最大值(如果列表中有一個值為NULL讯泣,則返回NULL)
- select greatest(2, 3) from dual; -- 結果為 3
- select greatest('11', '12', '9') from dual; -- 結果為 9
- select greatest(NULL, 1, 2) from dual; -- 結果為 NULL
least(T v1, T v2, ...),返回類型:T
返回最小值(如果列表中有一個值為NULL灰署,則返回NULL)
- select least(2, 3) from dual; -- 結果為 2
- select least('11', '12', '9') from dual; -- 結果為 11
- select least(NULL, 1, 2) from dual; -- 結果為 NULL
width_bucket(NUMERIC expr, NUMERIC min_value, NUMERIC max_value, INT num_buckets),返回類型:INT
返回一個介于 0 和 num_buckets + 1 之間的整數(shù)(基于通過將[min_value局嘁,max_value]劃分為大小相等的區(qū)域來生成存儲桶)溉箕;
如果 expr 小于 min_value 則返回1,如果 expr 大于 max_value 則返回 num_buckets + 1
- select width_bucket(2, 1, 10, 5) from dual; -- 結果為 1
- select width_bucket(1, 2, 11, 5) from dual; -- 結果為 1
- select width_bucket(11, 1, 10, 5) from dual; -- 結果為 6