Oracle的知识点(第四章)

Oracle的知识点

开发工具与关键技术:Oracle、PLSQL Developer
作者:郑伟基
撰写时间:2019年3月27号

第四章:单行函数
1、 字符函数
大小写控制函数:Lower(全部变成小写)、Upper(全部变成大写)、Inttcar(首字母大写)
例:查询员工为King的信息。
select * from employees where lower(last_name) = ‘king’;
在这里插入图片描述

字符控制函数:Concat(连接字符串)、Substr(截取)、Length(取长度)、
Instr(选择字符串的第n个)、Lpad(左补齐)、Rpad(右补齐)、Trim(去头尾空格)、Replace(替换字符串)
select concat(concat('I ','Love ‘),‘You’) as 连接字符串,
substr(‘I Love SQL’,3,4) as 截取,length(‘I Love’) as 取长度,
instr(‘I Love’, ‘L’) as 选择字符串的第n个,lpad(‘123’, 10, ‘’) as 左补齐,
rpad(‘123’, 10, '
’) as 右补齐,trim(’ Mike ') as 去头尾空格,
replace(‘I 123’, ‘123’, ‘456’) as 替换字符串 from dual;
输出结果:
在这里插入图片描述

2、 数字函数
1)Round:四舍五入,将数字四舍五入到小数点后n位,n默认是0
例:将45.5654用Round来保留两位小数。
select round(45.5654,2) from dual;
在这里插入图片描述

2)Trunc:将数字截取到小数点后n位,n默认是0
例:将685.4541截取1位小数。
Select trunc(685.4541, 1) From dual;
在这里插入图片描述

例:将685.4541截取到小数点前2位数。
Select trunc(685.4541, -2) From dual;
在这里插入图片描述

3)求余:计算m除以n后的余数
例:用10除4求余。
Select Mod(10,4) from dual;
在这里插入图片描述

4)abs(m) : 取绝对值
例:取-565的绝对值。
Select abs(-565) From dual;
在这里插入图片描述

3、日期函数

  1. Sysdate :返回当前系统(oracle服务器)时间
    Select sysdate as 当前时间 from dual;
    在这里插入图片描述

2)Months_Between:返回两个月相差的月数
例:计算出自己的年龄,四舍五入到小数点后1位
Select round(months_between(Sysdate, ‘2-4月-1990’)/12 , 1) as 年龄 from dual;
在这里插入图片描述

3)Add_Months:向指定的日期加上相应的月数
例:在当前的月份加上一个月。
Select add_months(Sysdate, 1) from dual;
在这里插入图片描述

4)Next_day:指定日期的下一个星期相对应的日期
例:计算出当前星期的下一个星期3。
Select next_day(Sysdate, ‘星期三’) from dual;
在这里插入图片描述

5)Last_day:本月的最后一天
例:计算出当前时间的最后一天。
Select last_day(Sysdate) from dual;
在这里插入图片描述

6)Round:日期的四舍五入
例:1~15日为上半个月,不管这个月有多少天都可以计算。
Select round(to_date(‘15-5-2019’, ‘DD-MM-YYYY’), ‘MM’) from dual;
在这里插入图片描述

7)Trunc:日期的截断
例:员工的工资按全月来发放。
select last_name,hire_date,trunc(hire_date,‘MM’) from employees;
在这里插入图片描述

4、类型转换函数
1)、 隐式的类型转换
Select * from employees Where department_id = ‘20’;
Select * from employees Where department_id = 20;
–‘DD-MON-YYYY’
Select * from employees Where hire_date = ’ 17-6月-1987’;
– oracle是可以进行隐式类型转换的
– 隐式类型转换是有规则的
– 不建议大家使用隐式类型转换
– 1. 代码可读性差;
– 2. 使用隐式类型转换,代码的效率差;
– 3. Oracle并没有承诺在下一个版本中不修改隐式类型转换的规则。

2、 显式的类型转换:to_char : 将日期或数字转换成字符
– 常用的日期格式
例:输出当前系统日期,如 2019/3/26 星期二
Select to_char(Sysdate, ‘YYYY/MM/DD DY’) from dual;
在这里插入图片描述

–常用的时间格式:
例:查出当前的系统时间,如 下午 05:12:10。
Select to_char(Sysdate, ‘AM HH12:MI:SS’) from dual;
在这里插入图片描述

例:输出当前的系统时间,如 2019年3月13日
Select to_char(Sysdate, ‘fmYYYY"年"MM"月"DD"日"’) as 当前系统时间 from dual;
在这里插入图片描述

注:
– Q :代表季度
– W: 当月的第几周
– WW:当年的第几周
– 代表数字的格式字符串
– 9 : 代表一位数字;
– 0 : 代表一位数字或前导零;
– $ : 代表美元符号;
– L : 根据语言区域动态的显示本地的货币符号;
– . : 小数点;
– , : 千位分隔符;

2)、to_date:对字符转换为时间格式
例:将2000-02-15用日期来表示
select to_date(‘2000-02-15’,‘yyyy-mm-dd’) from dual;
在这里插入图片描述

3)、to_number:对字符的转换
例:将¥1,234,555,999.00用to_number来表示。
select TO_NUMBER(‘¥1,234,555,999.00’,‘L999,999,999,999.99’) from dual;
在这里插入图片描述

5、通用函数

  1. NVL函数:将空值转换成一个已知的值:
    例:查询员工表中员工姓名,工资及一个季度的工资。
    Select last_name, salary, (salary + nvl(commission_pct, 0)) * 3 from employees;
    在这里插入图片描述

  2. Nvl2:第一个值为空,返回第二个值;如第二给值为空,则返回第三个值,以此类推
    例:查询员工表中员工姓名,工资及一个季度的工资。
    select last_name,salary,nvl2 (commission_pct,salary + commission_pct , salary) * 3 from employees;
    在这里插入图片描述

  3. NULLIF:函数主要是完成两个参数的比较。当两个参数不相等时,返回值是第一个参数值;当两个参数相等时,返回值是空值

  4. Coalesce: 参数的数量没有限制,返回第一个不为空 的参数
    例:查询员工表中员工姓名,工资及一个季度的工资。
    select last_name,salary,coalesce (salary + commission_pct,salary,0) * 3 from employees;
    在这里插入图片描述

  5. Case:作条件分支的判断,表达式(case…when…then…else…end…)
    例:查询出员工表中的员工姓名,工资及部门编号以及部门名称
    select last_name,salary,department_id,
    (case department_id when 20 then ‘部门2’ else '部门’end) as 部门名称 from employees;
    在这里插入图片描述

  6. decode : case表达式的简便写法
    – decode函数的参数也是不限数量的

6、嵌套函数
单行函数可以嵌套
嵌套的函数执行顺序是由内往外
例:查询各个部门中 最高工资中最低的那个部门的 最低工资是多少
select min(max(salary)) from employees group by department_id;
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39827390/article/details/89003787