大小写转换函数

LOWER、UPPER 和INITCAP 是三个大小写转换函数。
• LOWER:将大小写混合或大写的字符串转换为小写
• UPPER:将大小写混合或小写的字符串转换为大写
• INITCAP:将每个单词的首字母转换为大写,其余字母保留为小写
以下函数用于转换字符串的大小写:

  1. --UPPER
  2. SELECT UPPER(BH) FROM [fixf_zk(fentan)].[dbo].[FIXF_Svr_PJ]
  3. --LOWER
  4. SELECT lower(BH) FROM [fixf_zk(fentan)].[dbo].[FIXF_Svr_PJ]
  5. --INITCAP
  6. select initcap(tzdlxqc) from fixf_svr_tzdsy;

字符处理函数

CONCAT、SUBSTR、LENGTH、INSTR、LPAD、RPAD 和TRIM 是本课中要介绍的字符
处理函数。
• CONCAT:将值联接在一起(CONCAT 函数中只能使用两个参数)
• SUBSTR:提取确定长度的字符串
• LENGTH:以数字值的形式显示字符串的长度
• INSTR:查找指定字符串的数字位置
• LPAD:返回一个表达式,左边使用一个字符表达式填充到n 个字符的长度
• RPAD:返回一个表达式,右边使用一个字符表达式填充到n 个字符的长度
• TRIM:截去字符串首字符或尾字符(或者两者都截去)(如果trim_character
或trim_source 是一个字符文字,则必须将其放在单引号内)
1572503682709-52bb44d8-0b46-457d-bc93-d364e45b7c54.png

--CONCAT
select  CONCAT(tzdbm,tzdlx) from fixf_svr_tzdsy; 
--SUBSTR
select substr(tzdbm,1,5) from fixf_svr_tzdsy; 
--LENGTH
select length(tzdbm) from fixf_svr_tzdsy; 
--INSTR
select instr(tzdbm,6) from fixf_svr_tzdsy;
--LPAD
select lpad(tzdbm,20,'*') from fixf_svr_tzdsy; 
--RPAD
select rpad(tzdbm,20,'*') from fixf_svr_tzdsy;
--TRIM
select replace('JACK and JUE','J','BL') from dual;
select TRIM('151704' from tzdbm) from fixf_svr_tzdsy; 
--前面截取
select trim(leading 'H' from 'HelloWorldH') from dual;
--后面截取
select trim(trailing 'H' from 'HelloWorldH') from dual;

数字函数

• ROUND:将值舍入到指定的小数位
• TRUNC:将值截断到指定的小数位
• MOD:返回除法运算的余数

--ROUND
select  round(ye,1)   from fixf_svr_xzh;
--TRUNC
 select trunc(ye,1) from fixf_svr_xzh;
--MOD
select  mod(ye,500) from fixf_svr_xzh;
select mod(7,2) from dual;--经常用于奇偶判断

日期有关的运算

Oracle函数 - 图2
Oracle函数 - 图3

--MONTHS_BETWEEN
select  months_between(sysdate,khrq)  from  fixf_svr_xzh;
--ADD_MONTHS
select  add_months(sysdate,2)  from  dual;
--NEXT_DAY
select next_day(to_date('2019-10-22','yyyy-mm-dd'),7) from dual;注意周日到周六为1-7表示
--LAST_DAY
select last_day(to_date('2019-10-22','yyyy-mm-dd')) from dual;

Oracle函数 - 图4
Oracle函数 - 图5
Oracle函数 - 图6
Oracle函数 - 图7
Oracle函数 - 图8

--TO_CHAR
select to_char(hire_date,'yyyy-mm') from employees;
select to_char(salary,'$99,999.00') from employees;

常规函数

Oracle函数 - 图9
Oracle函数 - 图10
Oracle函数 - 图11
Oracle函数 - 图12

--NVL
select commission_pct,nvl(commission_pct,0) from employees;
--NVL2
select commission_pct,nvl2(commission_pct,'SAL+COM','SAL') from employees;

Oracle函数 - 图13

--NULLIF
select nullif(10,20) from dual;

Oracle函数 - 图14

--COALESCE
SELECT commission_pct,
       manager_id,
       coalesce(to_char(commission_pct)
               ,to_char(manager_id)
               ,'no commission and no manager')
  FROM employees;

条件表达式

Oracle函数 - 图15

--CASE WHEN
SELECT last_name,
       job_id,
       salary,
       CASE job_id
         WHEN 'IT_PROG' THEN
          1.10 * salary
         WHEN 'ST_CLERK' THEN
          1.15 * salary
         WHEN 'SA_REP' THEN
          1.20 * salary
         ELSE
          salary
       END "revised_salary"
  FROM employees;

Oracle函数 - 图16

--DECODE
SELECT last_name,
       job_id,
       salary,
       decode(job_id
             ,'IT_PROG'
             ,1.10 * salary
             ,'ST_CLERK'
             ,1.15 * salary
             ,'SA_REP'
             ,1.20 * salary
             ,salary) revised_salary
  FROM employees;