欢迎投稿

今日深度:

Oracle单行函数(字符,数值,日期,转换),

Oracle单行函数(字符,数值,日期,转换),


目录
  • Oracle单行函数(字符,数值,日期,转换)
  • 1、字符函数接收字符输入返回字符或者数值,dual 是伪表
    • 1.1大小写转换函数
    • 1.2连接字符串X和concat(X,Y)
    • 1.3ASCII码与字符转换
    • 1.4返回字符串索引位置:instr(x,str)
    • 1.5返回字符串长度:length()
    • 1.6字符串替换:replace(X,old,new)
  • 2、数值函数
    • 2.1四舍五入函数:round()
    • 2.2直接截取函数:trunc()
    • 2.3求余数函数:mod()
    • 2.4取绝对值:abs()
    • 2.5大于x最近的整数值,或本身:ceil()
    • 2.6小于x最近的整数值,或本身:floor()
    • 2.7X的Y次幂:power(X,Y)
  • 3、日期函数
    • 4、转换函数
      • 4.1日期转字符串:to_char()
      • 4.2字符串转日期:to_date()---字符串转日期
    • 5、通用函数:nvl()

      Oracle单行函数(字符,数值,日期,转换)

      1、字符函数接收字符输入返回字符或者数值,dual 是伪表

      1.1大小写转换函数

      ---1. 把小写的字符转换成大小的字符
      select upper('yes') from dual; 结果:YES
      ---2. 把大写字符变成小写字符
      select lower('YES') from dual; 结果:yes

      1.2连接字符串X和concat(X,Y)

      select CONCAT('abc','efg') from dual;  结果:abcefg

      1.3ASCII码与字符转换

      --ASCII(x)返回字符X 的ASCII码
      select ASCII('a') from dual;  结果:97
      --CHR(x)接收一个ASCII码 返回一个字符
      select CHR(65) from dual;     结果:A

      1.4返回字符串索引位置:instr(x,str)

      索引从1开始

      select INSTR('abcefg123','123') from dual;  结果:7

      1.5返回字符串长度:length()

      select LENGTH('abcefg123') from dual;  结果:9

      1.6字符串替换:replace(X,old,new)

      --REPLACE(X,old,new)在X中查找old,并替换成new
      select REPLACE('abc882388','88','666') from dual;  结果:abc66623666

      1.6字符截取:substr(str,start,lenth)

      --REPLACE(X,old,new)在X中查找old,并替换成new--返回X的字串,从start处开始,截取length个字符,缺省length,默认到结尾select SUBSTR('abcdefg', 4, length('abcdefg')) from dual;结果:defg

      2、数值函数

      2.1四舍五入函数:round()

      ---1. 四舍五入函数:ROUND()
      ---默认情况下 ROUND 四舍五入取整,可以自己指定保留的位数。
      ---保留位数为负数,即往前保留几位数
      select round(26.16    ) from dual; 结果:26
      select round(26.16,  1) from dual; 结果:26.1
      select round(26.16, -1) from dual; 结果:30
      select round(26.16, -2) from dual; 结果:0
      select round(56.16, -2) from dual; 结果:100

      2.2直接截取函数:trunc()

      ---直接截取,不在看后面位数的数字是否大于5.
      select trunc(56.56    ) from dual;  结果:56
      select trunc(56.16, 1) from dual;   结果:56.1
      select trunc(56.16, -1) from dual;  结果:50

      2.3求余数函数:mod()

      ---求余数
      select mod(10, 3) from dual;  结果:1

      2.4取绝对值:abs()

      select abs(-1) as a from dual;  结果:1

      2.5大于x最近的整数值,或本身:ceil()

      select CEIL(3.00001) as a from dual;  结果:4

      2.6小于x最近的整数值,或本身:floor()

      select FLOOR(2.9999999) as a from dual;   结果:2

      2.7X的Y次幂:power(X,Y)

      select POWER(3,4) as a from dual;  结果:81

      3、日期函数

      Oracle 中提供了很多和日期相关的函数,包括日期的加减,在日期加减时有一些规律
      日期 – 数字 = 日期
      日期 + 数字 = 日期
      日期 – + 日期 = 数字 (可直接加减,单位是天)

      ----查询出emp表中所有员工入职距离现在几天。
      select sysdate-e.hiredate from emp e;                     结果:以天为单位的小数
      ----算出明天此刻
      select sysdate+1 from dual;                               结果:2020/12/4 16:35:36
      ----查询出emp表中所有员工入职距离现在几月。
      select months_between(sysdate,e.hiredate) from emp e;     结果:以月为单位的小数
      ----查询出emp表中所有员工入职距离现在几年。
      select months_between(sysdate,e.hiredate)/12 from emp e;  结果:以年为单位的小数
      ----查询出emp表中所有员工入职距离现在几周。
      select round((sysdate-e.hiredate)/7) from emp e;          结果:以周为单位的小数

      4、转换函数

      4.1日期转字符串:to_char()

      ---日期转字符串
      select to_char(sysdate, 'yyyy-mm-dd hh:mi:ss') from dual;        结果:2020-12-04 05:18:03    12小时有0
      select to_char(sysdate, 'fm yyyy-mm-dd hh:mi:ss') from dual;     结果:2020-12-4 5:18:32      12小时无0
      select to_char(sysdate, 'fm yyyy-mm-dd hh24:mi:ss') from dual;   结果: 2020-12-4 17:18:47    24小时无0
      可以使用 TO_CHAR 函数来拆分年月日
      select empno,ename
             to_char(hiredate,'yyyy') 年,
             to_char(hiredate,'mm') 月,
             to_char(hiredate,'dd') 日
      from emp;

      select empno,ename
             to_char(hiredate,'yyyy-mm-dd') 日
      from emp;

      to_char(number,‘L999,999.99’)

      L代表货币符号,代表千位数分隔符.代表小数位分隔符

      select to_char(123456.99,'L999,999.99') from dual;   结果:          $123,456.99

      4.2字符串转日期:to_date()---字符串转日期

      select to_date('2020-12-4 17:18:47', 'fm yyyy-mm-dd hh24:mi:ss') from dual;

      5、通用函数:nvl()

      ---算出emp表中所有员工的年薪(奖金+12个月 月薪)
      select e.sal*12 from emp e;                  结果:12个月 月薪
      ---奖金里面有null值,如果null值和任意数字做算术运算,结果都是null。
      select e.sal*12+e.comm from emp e;           结果:有员工结果为空
      ---如果 e.comm 为空,则正常相加;e.comm 为 null,则用 0取代 e.comm
      select e.sal*12+nvl(e.comm, 0) from emp e;   结果:正常查询员工年薪

      到此这篇关于Oracle单行函数(字符,数值,日期,转换)的文章就介绍到这了,更多相关Oracle单行函数内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

      您可能感兴趣的文章:
      • OraclePL/SQL单行函数和组函数详解
      • Oracle to_char 日期转换字符串语句分享
      • ORACLE常用数值函数、转换函数、字符串函数

      www.htsjk.Com true http://www.htsjk.com/oracle/46702.html NewsArticle Oracle单行函数(字符,数值,日期,转换), 目录 Oracle单行函数(字符,数值,日期,转换) 1、字符函数接收字符输入返回字符或者数值,dual 是伪表 1.1大小写转换函数 1.2连接字符串X和c...
      评论暂时关闭