欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle单行函数以及日期计算的方式

程序员文章站 2022-06-02 13:42:46
单行函数 字符类型单行函数 LOWER(列名) UPPER(列名) 查找employees表last_name列中包含a(不区分大小写)员工的last_name SELECT...

单行函数

字符类型单行函数 LOWER(列名) UPPER(列名)

查找employees表last_name列中包含a(不区分大小写)员工的last_name SELECT LAST_NAME FROM EMPOLYEES WHERE UPPER(LAST_NAME) LIKE ‘%A%’; SUBSTR(列名,N)–从指定的位置开始截取字符串直到字符的末尾 SUBSTR(列名,N,M)–从指定的位置开始截取指定长度的字符串 SUBSTR(列名,-N)–从倒数第N位开始截取字符串,直到字符串的末尾 SUBSTR(列名,-N,M)–从倒数第N位开始截取指定长度的字符串 INSTR():在第一个参数中查找第二个参数首次出现的位置,没找到返回0

查找employees表中last_name包含a的员工的last_name SELECT LAST_NAME

FROM EMPLOYEES

WHERE INSTR(LAST_NAME,’a’)>0; LENGTH(‘中国’)–获得字符数 LENGTHB(‘中国’)–获得字节数 TRIM(‘zifu chuan’)–去掉字符串两端的空格 TRIM(‘z’ FROM ‘zzzifuchuanzzz’)–去掉字符串两端指定的字符 LPAD()/RPAD():显示第一个参数的值,使用第二个参数设置第一个参数显示的长度,如果第一个参数长度不足,使用第三个参数在第一个参数的左/右面补齐长度。 数字类型单行函数

ROUND():四舍五入 TRUNC():截取数字 MOD():取余数 日期类型单行函数 SYSDATE:获得数据库服务器当前日期+时间

Oracle中日期计算的方式

日期+天数=日期 日期-天数=日期 日期-日期=天数 日期不能加日期 MONTHS_BETWEEN():获得两个日期相差的月数 ADD_MONTHS():在指定的日期上加上N个月 类型转换单行函数

自动转换:效率低,不建议使用 手动转换:TO_CHAR(),TO_DATE(),TO_NUMBER()

字符串可以与日期相互转换 字符串可以与数字相互转换 数字与日期不能相互转换 TO_CHAR():

TO_CHAR(SYSDATE,’YYYY-MM-DD’)年月日 (SYSDATE,’YYYY-MM-DD HH24:MI:SS DAY DY’)年月日时分秒星期星期 TO_CHAR(HIRE_DATE,’FMYYYY”年”MM”月”DD”日”’):1994年10月22 日 TO_CHAR(SYSDATE,’D DD DDD’):D数字表示的周几,周日为1,依次类推,DD这个月的第几天,DDD这一年的第几天 TO_DATE(C,F):根据模板F将字符类型C转换为日期类型的值

TO_DATE(‘2017-10-1’,’YYYY-MM-DD’) TO_NUMBER(C,F):根据模板F将字符类型C转换为数字类型的值

TO_NUMBER(‘¥10,000.00’,’L99,999.00’) 通用单行函数

NVL():当地一个参数不为NULL,返回第一个参数,当第一个参数为NULL,返回第二个参数,两个参数类型必须一致 关系数据库中当算术运算中出现了NULL,结果一定为NULL NVL2():当第一个参数不为NULL,返回第二个参数。当第一个参数为NULL,返回第三个参数。 分支选择:CASE表达式,DECODE()函数。

CASE表达式:结果的类型必须保持一致,只能判断是否相等

查询employees表中所有员工的last_name,job_id,salary,新工资。如果job_id为IT_PROG时,工资增加10%。如果job_id为ST_CLERK时,工资增加15%。如果job_id为SA_REP时,工资增加20%,其它职位工资不变。 SELECT LAST_NAME,JOB_ID,SALARY,

CASE

WHEN JOB_ID=’IT_PROG’ THEN SALARY*1.1

WHEN JOB_ID=’ST_CLERK’ THEN SALARY*1.15

WHEN JOB_ID=’SA_REP’ THEN SALARY*1.2

ELSE SALARY

END AS 新工资

FROM EMPLOYEES; DECODE():只能判断是否相等

SELECT LAST_NAME,JOB_ID,SALARY,

DECODE(

JOB_ID,

‘IT_PROG’,SALARY*1.1,

‘ST_CLERK’,SALARY*1.15,

‘SA_REP’,SALARY*1.2,

SALARY

)AS 新工资

FROM EMPLOYEES; END