大小写转换函数
LOWER、UPPER 和INITCAP 是三个大小写转换函数。
• LOWER:将大小写混合或大写的字符串转换为小写
• UPPER:将大小写混合或小写的字符串转换为大写
• INITCAP:将每个单词的首字母转换为大写,其余字母保留为小写
以下函数用于转换字符串的大小写:
SELECT UPPER(BH) FROM [fixf_zk(fentan)].[dbo].[FIXF_Svr_PJ]
SELECT lower(BH) FROM [fixf_zk(fentan)].[dbo].[FIXF_Svr_PJ]
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 是一个字符文字,则必须将其放在单引号内)
select CONCAT(tzdbm,tzdlx) from fixf_svr_tzdsy;
select substr(tzdbm,1,5) from fixf_svr_tzdsy;
select length(tzdbm) from fixf_svr_tzdsy;
select instr(tzdbm,6) from fixf_svr_tzdsy;
select lpad(tzdbm,20,'*') from fixf_svr_tzdsy;
select rpad(tzdbm,20,'*') from fixf_svr_tzdsy;
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:返回除法运算的余数
select round(ye,1) from fixf_svr_xzh;
select trunc(ye,1) from fixf_svr_xzh;
select mod(ye,500) from fixf_svr_xzh;
select mod(7,2) from dual;--经常用于奇偶判断
日期有关的运算
select months_between(sysdate,khrq) from fixf_svr_xzh;
select add_months(sysdate,2) from dual;
select next_day(to_date('2019-10-22','yyyy-mm-dd'),7) from dual;注意周日到周六为1-7表示
select last_day(to_date('2019-10-22','yyyy-mm-dd')) from dual;
转换函数
select to_char(hire_date,'yyyy-mm') from employees;
select to_char(salary,'$99,999.00') from employees;
常规函数
select commission_pct,nvl(commission_pct,0) from employees;
select commission_pct,nvl2(commission_pct,'SAL+COM','SAL') from employees;
select nullif(10,20) from dual;
SELECT commission_pct,
manager_id,
coalesce(to_char(commission_pct)
,to_char(manager_id)
,'no commission and no manager')
FROM employees;
条件表达式
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;
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;