美文网首页
Oracle学习笔记(五)

Oracle学习笔记(五)

作者: dev_winner | 来源:发表于2019-09-25 07:40 被阅读0次
  • 函数的作用:方便数据的统计;处理查询结果。
  • 函数的分类:数值函数、字符函数、日期函数、转换函数。
  • 四舍五入函数:ROUND(n, [, m])
  • 省略m:0(取整);m > 0:小数点后m位;m < 0:小数点前m位。n表示要进行四舍五入的值,m表示保留小数点后几位或前几位。
-- dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。
SQL> SELECT ROUND(23.45), ROUND(23.45, 1), ROUND(23.45, -1) FROM dual;
ROUND(23.45) ROUND(23.45,1) ROUND(23.45,-1)
------------ -------------- ---------------
          23           23.5              20
  • 取整函数:CEIL(n):向上取整FLOOR(n):向下取整
SQL> SELECT CEIL(23.45), FLOOR(23.45) FROM dual;
CEIL(23.45) FLOOR(23.45)
----------- ------------
         24           23
  • 取绝对值函数:ABS(n)
SQL> SELECT ABS(23.45), ABS(-23), ABS(0) FROM dual;
ABS(23.45)   ABS(-23)     ABS(0)
---------- ---------- ----------
     23.45         23          0
  • 取余数函数:MOD(m, n):m为被除数,n为除数。若m或n为null值,则结果直接返回null值。
SQL> SELECT MOD(5, 2), MOD(5, null) FROM dual;
  MOD(5,2) MOD(5,NULL)
---------- -----------
         1
  • 幂函数:POWER(m, n):表示返回m的n次幂。
SQL> SELECT POWER(2, 3), POWER(null, 5) FROM dual;
POWER(2,3) POWER(NULL,5)
---------- -------------
         8
  • 平方根函数:SQRT(n)
SQL> SELECT SQRT(16), SQRT(12) FROM dual;
  SQRT(16)   SQRT(12)
---------- ----------
         4 3.46410162
  • 三角函数:SIN(n)ASIN(n)COS(n)ACOS(n)TAN(n)ATAN(n),其中n为弧度制形式
SQL> SELECT COS(0) FROM dual;
    COS(0)
----------
         1
  • 大小写字母转换函数:UPPER(char)(将所有字母全部转化成大写字母)、LOWER(char)(将所有字母全部转化成小写字母)、INITCAP(char)(把首字母大写)、
SQL> SELECT UPPER('abc'), LOWER('ACD'), INITCAP('bas') FROM dual;
UPP LOW INI
--- --- ---
ABC acd Bas
  • 获取子字符串函数:SUBSTR(char, [m, [, n]]),char表示源字符串,m表示截取子串的开始位置,n表示截取子串的位数。其中参数n可以省略,当n省略时表示从m的位置开始截取到源字符串末尾的子串。当m为负数时,表示从源字符串的尾部倒数第|m|个位置开始向后截取n位字符的子串。
SQL> SELECT SUBSTR('abcde', 2, 3), SUBSTR('abcde', 2), SUBSTR('abcde', -2, 2) FROM dual;
SUB SUBS SU
--- ---- --
bcd bcde de
  • 获取字符串长度的函数:LENGTH(char)
SQL> SELECT LENGTH('abbsd') FROM dual;
LENGTH('ABBSD')
---------------
              5
  • 字符串连接函数:CONCAT(char1, char2),其与||操作符的作用相同。
SQL> SELECT CONCAT('ABCD', 'EFG') FROM dual;
CONCAT(
-------
ABCDEFG

SQL> SELECT 'ba' || 'cd' FROM dual;
'BA'
----
bacd
  • 去除子串函数:TRIM(c2 FROM c1):表示从字符串c1中去除所有为c2的字符(1个或多个)。LTRIM(c1 [, c2]):表示从字符串c1的头部开始去除连续相同的c2子串,若有中断则停止。RTRIM(c1, [, c2]):表示从字符串c1的尾部开始向前去除连续相同的c2子串,若有中断则停止。TRIM(c1):表示去除字符串c1首尾的空格。LTRIM(c1):表示去除字符串c1最左边的空格。RTRIM(c1):表示去除字符串c1最右边的空格。
SQL> SELECT TRIM('d' FROM 'abcddddd') FROM dual;
TRI
---
abc

SQL> SELECT LTRIM('abcde', 'ab') FROM dual;
LTR
---
cde

SQL> SELECT RTRIM('ababcdcde', 'cd') FROM dual;
RTRIM('AB
---------
ababcdcde

SQL> SELECT RTRIM('ababcdcde', 'cde') FROM dual;
RTRI
----
abab

SQL> SELECT LTRIM('    ababcde ') FROM dual;
LTRIM('A
--------
ababcde

SQL> SELECT TRIM('    ababcde ') FROM dual;
TRIM('A
-------
ababcde
  • 替换函数:REPLACE(char, s_string [, r_string]),char表示源字符串,s_string 表示源字符串中要替换的子串,若省略r_string则相当于直接删除子串s_string。
SQL> SELECT REPLACE('abced', 'a', 'AA') FROM dual;
REPLAC
------
AAbced

SQL> SELECT REPLACE('abced', 'a') FROM dual;
REPL
----
bced
  • 获取系统日期:SYSDATE,默认格式为DD-MON-RR
SQL> SELECT SYSDATE FROM dual;
SYSDATE
--------------
29-9月 -19
  • ADD_MONTHS(date, i):返回在指定日期上增加月份后的日期,其中i可以是任何整数;若i是小数,则截取整数部分;若i是负数,则相当于为原日期的月份值减去i。
SQL> SELECT ADD_MONTHS(SYSDATE, 3), ADD_MONTHS(SYSDATE, -3) FROM dual;
ADD_MONTHS(SYS ADD_MONTHS(SYS
-------------- --------------
29-12月-19     29-6月 -19
  • NEXT_DAY(date, char):若char的值为'星期一',则返回date指定日期的下周一的具体日期。
SQL> SELECT NEXT_DAY(SYSDATE, '星期一') FROM dual;
NEXT_DAY(SYSDA
--------------
30-9月 -19
  • LAST_DAY(date):返回指定日期所在月份的最后一天。
SQL> SELECT LAST_DAY(SYSDATE) FROM dual;
LAST_DAY(SYSDA
--------------
30-9月 -19
  • MONTHS_BETWEEN(date1, date2):表示2个日期之间相隔的月份。
SQL> SELECT MONTHS_BETWEEN('20-5月-19', '10-1月-19') FROM dual;
MONTHS_BETWEEN('20-5月-19','10-1月-19')
---------------------------------------
                             4.32258065
  • EXTRACT(date FROM datetime):提取datetime日期中某一部分值,比如“年”。其中datetime可以是时间戳类型timestamp
SQL> SELECT EXTRACT(year FROM SYSDATE) FROM dual;
EXTRACT(YEARFROMSYSDATE)
------------------------
                    2019

SQL> SELECT EXTRACT(month FROM SYSDATE) FROM dual;
EXTRACT(MONTHFROMSYSDATE)
-------------------------
                        9

SQL> SELECT EXTRACT(day FROM SYSDATE) FROM dual;
EXTRACT(DAYFROMSYSDATE)
-----------------------
                     29

SQL> SELECT EXTRACT(hour FROM timestamp '2019-9-29 17:25:13') FROM dual;
EXTRACT(HOURFROMTIMESTAMP'2019-9-2917:25:13')
---------------------------------------------
                                           17
  • 日期转换成字符的函数:TO_CHAR(date [, fmt [, params]])。参数说明:date表示将要转换的日期,fmt表示转换的格式,params表示日期的语言。日期默认格式:DD-MON-RR(天月年)。常用格式如下:

YY、YYYY、YEAR(年)
MM、MONTH(月)
DD、DAY(天)
HH24、HH12(小时)
MI、SS(分钟、秒)

SQL> SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual;
TO_CHAR(SYSDATE,'YY
-------------------
2019-09-29 13:06:07
  • 字符转换成日期的函数:TO_DATE(char [, fmt [, params]]),params用于指定日期的语言,此参数一般不适用。注意:to_date()函数按照系统默认格式显示日期。
SQL> SELECT TO_DATE('2019-09-29','YYYY-MM-DD') FROM dual;
TO_DATE('2019-
--------------
29-9月 -19
  • 数字转换成字符的函数:TO_CHAR(number [, fmt])。参数说明:

9:显示数字并忽略前面的0
0:显示数字,位数不足,用0补齐
.或D:显示小数点
, 或G:显示千位符
$:美元符号
S:加正负号(前后都可以,但不能同时加上)

-- 格式占位符缺失,将用'#'字符显示结果
SQL> SELECT TO_CHAR(123456.98, '$99,999.999') FROM dual;
TO_CHAR(1234
------------
############

SQL> SELECT TO_CHAR(123456.98, '$999,999.99') FROM dual;
TO_CHAR(1234
------------
 $123,456.98

-- 四舍五入
SQL> SELECT TO_CHAR(123456.98, '$999,999') FROM dual;
TO_CHAR(1
---------
 $123,457

SQL> SELECT TO_CHAR(123456.98, 'S999,999.99') FROM dual;
TO_CHAR(123
-----------
+123,456.98

SQL> SELECT TO_CHAR(-123456.98, '999,999.99S') FROM dual;
TO_CHAR(-12
-----------
123,456.98-
  • 将字符转换成数字的函数:TO_NUMBER(char [, fmt])。参数fmt是转换的格式,可以省略。
SQL> SELECT TO_NUMBER('$1,000', '$9999') FROM dual;
TO_NUMBER('$1,000','$9999')
---------------------------
                       1000

相关文章

  • Oracle学习笔记(五)

    函数的作用:方便数据的统计;处理查询结果。 函数的分类:数值函数、字符函数、日期函数、转换函数。 四舍五入函数:R...

  • 相老师的OCP教程 1-5课文字版

    甲骨论相老师01课笔记 Oracle的学习软件:sqldeveloper。学习Oracle时一定要注重原理的学习,...

  • 2020-03-17

    spark学习笔记centos安装Oracle VirtualBox: Centos安装Vagrant

  • Oracle笔记(二)

    Oracle笔记系列这几篇是来自一位老师的笔记,分享给大家放在简书上,主要方便自己时常复习,还有学习Oracle的...

  • Oracle笔记(三)

    Oracle笔记系列这几篇是来自一位老师的笔记,分享给大家放在简书上,主要方便自己时常复习,还有学习Oracle的...

  • Oracle笔记(四)

    Oracle笔记系列这几篇是来自一位老师的笔记,分享给大家放在简书上,主要方便自己时常复习,还有学习Oracle的...

  • Oracle笔记(一)

    Oracle笔记系列这几篇是来自一位老师的笔记,分享给大家放在简书上,主要方便自己时常复习,还有学习Oracle的...

  • Oracle学习笔记

    整理电脑文档,翻到以前的学习笔记,在这里分享给大家,希望给学习Oracle的你,提供一点帮助。 Oracle SQ...

  • Oracle 学习笔记

  • Oracle学习笔记

    Oracle的知识点总结 语法部分主要补充与MySQL不同的地方 1. 连接符|| 2. 伪表-dual 3.过滤...

网友评论

      本文标题:Oracle学习笔记(五)

      本文链接:https://www.haomeiwen.com/subject/odliuctx.html