复习

Oracle:

单行函数:

LOWER()

UPPER()

SUBSTR(LAST_NAME,3)    //从指定位置截取到末尾

SUBSTR(LAST_NAME,3,2)    //从指定位置截取指定长度

SUBSTR(LAST_NAME,-3,2)    //从倒数第3位截取指定长度

INSTR(LAST_NAME,'a')    //在第一个参数中查找第二个参数首次出现的位置,找不到返回0

LENGTH('中国')    //获得字符数

LENGTHB('中国')    //获得字节数

SELECT TRIM('  ABC  ABC    ') AS A     //去掉字符串两端的空格

SELECT TRIM('A' FROM 'AAABCABCAAA') AS A     //去掉字符串两端的制定的字符

LPAD()/RPAD(()   

SELECT LPAD(EMPLOYEE_ID,6,0) FROM EMPLOYEES;    //显示EMPLOYEE_ID6位长度,不足在左边补0

ROUND()    //四舍五入

TRUNC()    //截取数字

MOD()

SELECT MOD(15,2) FROM DUAL    //取余数

SYSDATE    //系统时间

SELECT SYSDATE FROM DUAL

SELECT SYSDATE+1000 FROM DUAL

SELECT SYSDATE-1000 FROM DUAL

SELECT TRUNC(SYSDATE-HIRE_DATE) FROM EMPLOYEES

--MONTHS_BETWEEN()    //计算两个日期相差的月数

SELECT MONTHS_BETWEEN(SYSDATE,HIRE_DATE) FROM EMPLOYEES

ADD_MONTHS()    //日期加上指定的月数

SELECT ADD_MONTHS(SYSDATE,-100) FROM DUAL

TO_CHAR(D,F)    //将日期类型的值D根据模板F转换成字符串

SELECT TO_CHAR(HIRE_DATE,'YYYY-MM-DD DAY')

TO_CHAR(N,F)    //将数字类型的N根据模板F转换成字符类型的值

SELECT TO_CHAR(256987.365,'$99,999,999.00') FROM DUAL

TO_DATE(S,F)    //根据模板F将字符类型转成日期类型

TO_NUMBER(S,F)    //将字符类型S按照模板F转成数字类型

SELECT TO_NUMBER('¥10,000.00','L99,999.00') FROM DUAL

NVL()    //当第一个参数不为NULL,返回第一个参数。当第一个参数为NULL,返回第二个参数。两个参数类型必须一致

SELECT NVL(TO_CHAR(COMMISSION_PCT,'FM0.00'),'没有佣金') FROM EMPLOYEES

SELECT NVL2(COMMISSION_PCT,'有佣金','没有佣金') FROM EMPLOYEES

CASE 表达式:

SELECT LAST_NAME,JOB_ID,SALARY,

CASE

WHEN JOB_ID ='IT_PROG' THEN

SALARY*1.1

WHEN JOB_ID ='ST_CLERK' THEN

SALARY*1.2

WHEN JOB_ID ='SA_REP' THEN

SALARY*1.3

ELSE SALARY

END AS 新工资

FROM EMPLOYEES


SELECT LAST_NAME,JOB_ID,SALARY,

CASE JOB_ID

WHEN 'IT_PROG' THEN SALARY*1.1 

WHEN 'ST_CLERK' THEN SALARY*1.5

WHEN 'SA_REP' THEN SALARY*1.2

ELSE SALARY

END AS 新工资

FROM EMPLOYEES;

//查询employees表中所有员工的last_name,hire_date(格式 1999-10-1),星期,

查询结果根据星期升序排列(要求:星期一作为一周的开始)

SELECT LAST_NAME,TO_CHAR(HIRE_DATE,'YYYY-MM-DD'),TO_CHAR(HIRE_DATE,'DAY')

FROM EMPLOYEES

ORDER BY TO_CHAR(HIRE_DATE-1,'D') ASC;

//查询employees 表中所有员工的last_name,hire_date(格式:YYYY-MM-DD),工龄(只保留整数),奖金

工龄超过20年(不含),奖金为10倍工资

工龄超过23年(不含),奖金为15倍工资

工龄超过25年(不含),奖金为20倍工资

其他无奖金


SELECT LAST_NAME,TO_CHAR(HIRE_DATE,'YYYY-MM-DD'),TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE)/12),

CASE

WHEN MONTHS_BETWEEN(SYSDATE,HIRE)/12>25 THEN SALARY*20

WHEN MONTHS_BETWEEN(SYSDATE,HIRE)/12>23 THEN SALARY*15

WHEN MONTHS_BETWEEN(SYSDATE,HIRE)/12>20 THEN SALARY*10

ELSE 0

END AS 奖金

FROM EMPLOYEES






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值