阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle 常用内置系统函数总结

207次阅读
没有评论

共计 5140 个字符,预计需要花费 13 分钟才能阅读完成。

Oracle 数据库内置系统函数主要分为以下类别:数学函数、字符串函数、日期函数、转换函数、聚集函数、分析 / 聚合函数

一、数学函数 ———— 返回数字

      abs(n):返回数字 n 的绝对值
      ceil(n)
:返回 >= 数字 n 的最小整数
      floor(n)
:返回 <= 数字 n 的最大整数
      round(n,[m])
:做四舍五入运算, 如果 m 缺省则四舍五入到整数位
                             
m<0, 四舍五入到小数点的前 m 位,m>0 四舍五入到小数点的后 m 位
      trunc(n,[m])
:截取数字, 如果 m 缺省则将小数位截去
                           
 m<0, 截取到小数点的前 m 位,m>0 截取到小数点的后 m 位

1 Demo:abs()、ceil()、floor()、trunc() 
2 SELECT abs(2.3), 
3        ceil(2.6),ceil(2.6), 
4        floor(2.6),floor(2.6), 
5        round(666.588),round(666.588,2),round(666.588,2), 
6        trunc(666.588),trunc(666.588,2),trunc(666.588,2
7    FROM dual;

运算结果

1  ABS(-2.3) CEIL(-2.6)  CEIL(2.6) FLOOR(-2.6) FLOOR(2.6) ROUND(-666.588) ROUND(-666.588,2) ROUND(-666.588,-2) TRUNC(-666.588) TRUNC(-666.588,2) TRUNC(-666.588,-2)
2 ---------- ---------- ---------- ----------- ---------- --------------- ----------------- ------------------ --------------- ----------------- ------------------
3        2.3         -2          3          -3          2            -667           -666.59               -700            -666           -666.58               -600

 

        sqrt(n):返回数字 n(n 必须大于 0)的平方根
      power(n,m):返回数字 n 的 m 次幂,底数 n 和指数 m 都可以是任意数字, 但是如果底数 n 为负数则指数 m 必须为正数
       exp(n):返回 e(2.71828183….) 的 n 次幂
      ln(n):返回数字 n(n 必须大于 0) 的自然对数
      log(n,m):返回底数为 n(除 0 及 1 的正整数) 的真数为 m(任何正整数)对数
      mod(n,m):返回数字 n / m 的余数, 如果数字 m = 0 则返回 n

1 --demo:sqrt(),power(),exp(),ln(),log(),mod()  
2 SELECT sqrt(4),power(2,3),exp(1),ln(10),log(2,8),mod(5,2)  
3 FROM dual

运算结果

1    SQRT(4) POWER(2,3)     EXP(1)     LN(10)   LOG(2,8)   MOD(5,2)
2 ---------- ---------- ---------- ---------- ---------- ----------
3          2          8 2.71828182 2.30258509          3          1

 

      cos(n):返回数字 n(弧度单位表示的角度值)的余弦值
      cosh(n):返回数字 n 的双曲余弦值
       acos(n):返回数字 n 的反余弦值,求的结果单位为弧度,n 的范围为 -1 < n < 1
      sin(n):返回数字 n(弧度单位表示的角度值) 的正弦值
      sinh(n,m):返回数字 n 的双曲正弦值
       asin(n,m):返回数字 n 的反正弦值,求的结果单位为弧度,n 的范围为 -1 < n < 1
       tan(n):返回数字 n(弧度表示的角度值) 的正切值
      tanh(n):返回数字 n 的双曲正切值
      atan(n):返回数字 n 的反正切值,求的结果单位为弧度,n 的范围任意数值
       atan(n,m):返回数字 n / m 的反正切值,求的结果单位为弧度,你可以为任意数值,m 不可为 0

1 --demo:cos(),cosh(),acos(),sin(),sinh(),asin(),tan(),tanh(),atan(),atan()  
2 SELECT cos(0.5),cosh(2),acos(1),  
3        sin(0.5),sinh(2),asin(0),  
4        tan(0.5),tanh(2),atan(8),atan(16/2)  
5  FROM dual

运算结果

1   COS(0.5)    COSH(2)    ACOS(1)   SIN(0.5)    SINH(2)    ASIN(0)   TAN(0.5)    TANH(2)    ATAN(8) ATAN(16/2)
2 ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
3 0.87758256 3.76219569          0 0.47942553 3.62686040          0 0.54630248 0.96402758 1.44644133 1.44644133

二、字符串函数 ———— 返回字符值
       ascii(n):返回字符 c 的 ascii 值
      chr(n):将 ascii 值转换为对应的字符
      initcap(s):将字符串 s 所有的单词(单词是用. 空格或给字母数字字符由空格, 控制字符, 标点符号进行分隔) 的首字母大写, 其余小写
      lower(s):将字符串 s 中所有的字符转换为小写
      upper(s):将字符串 s 中所有的字符转换为大写
      concat(s1,s2):将字符串 s2 连接在 s1 后面,等同于操作符 ||
      length(s):将返回字串 s 的长度,返回的长度包括其中的所有空格(尾部空格也算);如果 s 为 null,则返回 null

 

1 --ascii(),chr(),concat(),initcap(), lower(),upper(), length(),
2 SELECT ascii('A'),chr(65),concat('Hello','World'),  
3        initcap('hello woRld'),  
4        lower('HeLLo woRld'),upper('HeLLo woRld'),  
5        length('HeLLo woRld'),length('天下英雄出我辈')  
6   FROM dual

运算结果

1 ASCII('A') CHR(65) CONCAT('HELLO','WORLD') INITCAP('HELLOWORLD') LOWER('HELLOWORLD') UPPER('HELLOWORLD') LENGTH('HELLOWORLD')
2 ---------- ------- ----------------------- --------------------- ------------------- ------------------- --------------------
3         65 A       HelloWorld              Hello World           hello world         HELLO WORLD                           11

 

lpad(s1,n,s2):在字串 s1 的左端填充字串 s2,直至填充后的 s1 的总长度为 n

                               如果不指定 s2 则默认为空格

                                如果 s1 的长度 >n,则直接返回 s1 左端的 n 个字符

      rpad(s1,n,s2):在字串 s1 的右端填充字串 s2,直至填充后的 s1 的总长度为 n

                               如果不指定 s2 则默认为空格

                                如果 s1 的长度 >n,则直接返回 s1 左端的 n 个字符

1 --demo:lpad、rpad  
2 SELECT lpad('a',10,'8'),lpad('SnnnnnnnnR',6,'8'),  
3        rpad('a',10,'8'),rpad('SnnnnnnnnR',6,'8')  
4    FROM dual

运算结果

1 LPAD('A',10,'8') LPAD('SNNNNNNNNR',6,'8') RPAD('A',10,'8') RPAD('SNNNNNNNNR',6,'8')
2 ---------------- ------------------------ ---------------- ------------------------
3 888888888a       Snnnnn                   a888888888       Snnnnn

instr(s1,s2,n,m):取得子串 s2 在字串 s1 中的位置

                                    n 表示在 s1 中开始搜索的位置,m 表示字串 s2 出现的次数

                                    如果 n 为负数,则表示从尾部开始搜索,n 与 m 默认为 1

substr(s1,m,n):取得字串 s1 从 m 开始,长度为 n 的子串,m>0 表示从头开始搜索,m<0 表示从尾开始

 

1 -- instr(), substr()
2 SELECT instr('888arrayarray','array',1,1) ,instr('888arrayarray','array',1,2),  
3        instr('888arrayarray','array',-1,1),instr('888arrayarray','array',-1,2),
4        substr('纵横天下',1,2),substr('array',-4,3)
5     FROM dual

运算结果:

INSTR('888ARRAYARRAY','ARRAY', INSTR('888ARRAYARRAY','ARRAY', INSTR('888ARRAYARRAY','ARRAY', INSTR('888ARRAYARRAY','ARRAY',
------------------------------ ------------------------------ ------------------------------ ------------------------------
                             4                              9                              9                              4

        ltrim(s1,str):从左端开始逐一取得字串 s1 左端包含的 str 中的任何字符

                                当遇到不是 str 中的字符是,则结束并返回剩余结果

        rtrim(s1,str):从右端开始逐一取得字串 s1 右端包含的 str 中的任何字符

                                当遇到不是 str 中的字符是,则结束并返回剩余结果

        trim(c FROM str):从字串 str 的头部、尾部、或两端截去字符 c(c 只能够是一个字符)

                                      当遇到不是 str 中的字符是,则结束并返回剩余结果

1 SELECT ltrim('terry','t'),ltrim('terry','ter'),ltrim('terry','e'),  
2         rtrim('terry','y'),rtrim('terry','ry'),rtrim('terry','yre'),  
3         trim('e' from 'terry'),trim('t' from 'terry'),trim('y' from 'terryy')  
4       FROM dual

运行结果:

1 LTRIM('TERRY','T') LTRIM('TERRY','TER') LTRIM('TERRY','E') RTRIM('TERRY','Y') RTRIM('TERRY','RY') RTRIM('TERRY','YRE') TRIM('E'FROM'TERRY') TRIM('T'FROM'TERRY') TRIM('Y'FROM'TERRYY')
2 ------------------ -------------------- ------------------ ------------------ ------------------- -------------------- -------------------- -------------------- ---------------------
3 erry               y                    terry              terr               te                  t                    terry                erry                 terr

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147403.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计5140字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中