Oracle 单行函数
學習Oracle 單行函數(shù):
包括字符函數(shù),數(shù)值函數(shù),日期函數(shù),轉換函數(shù),通用函數(shù)。
dual是一個”偽表”,可以用來測試函數(shù)和表達式。
1, 字符函數(shù)
包括大小寫控制函數(shù),字符控制函數(shù)。
大小寫控制函數(shù):lower,upper,initcap。
字符控制函數(shù):concat,substr,length,instr,lpad | rpad,trim,replace。
select lower( last_name || first_name) from employees;
select upper( last_name || first_name) from employees;
select initcap(job_id),job_id from employees;
select concat('Hello','World') from dual;
select substr('HelloWorld',1,5) from dual;
select length('HelloWorld') from dual;
select instr('HelloWorld','W') from dual;
select lpad('salary',10,'*') from dual;
select rpad('salary',10,'*') from dual;
select trim('H' from 'HelloWorld') from dual;
select replace('Hello','e','o') from dual;
2, 數(shù)字函數(shù)
分別有:round — 四舍五入,trunc — 截斷,mod — 求余
select round(85.969,2),round(85.969,0),round(85.969,-1) from dual;
select trunc(85.969,2),trunc(85.969,0),trunc(85.969,-2) from dual;
select last_name,salary,mod(salary,5000) from employees;
3, 日期函數(shù)
函數(shù)sysdate 返回:日期,時間
日期的數(shù)學運算:
計算員工入職日期距離系統(tǒng)當前時間相差多少個星期:
select last_name,(sysdate-hire_date)/7 as "周末" from employees;
日期函數(shù):
months_between:兩個日期相差的月數(shù)。
add_months:向指定日期中價上若干月數(shù)。
next_day:指定日期的下個星期*對應的日期。
last_day: 本月的最后一天。
round: 日期四舍五入。
trunc:日期截斷。
select round( months_between(sysdate,'1-1月-19')) from dual;
select add_months(sysdate,3) from dual;
select next_day(sysdate,'星期五') from dual;
select last_day(sysdate) from dual;
4,轉換函數(shù)
數(shù)據(jù)類型轉換:隱性/顯性
隱性數(shù)據(jù)類型轉換:
Oracle 自動完成轉換:
Varchar2 or char --> number
Varchar2 or char–> date
Number --> Varchar2
Date --> Varchar2
To_char 函數(shù)對日期的轉換
(1)必須包含在單引號中而且大小寫敏感。 (2)可以包含任意的有效的日期格式。 (3)日期之間用逗號隔開。select last_name,to_char(hire_date,'dd month yyyy') from employees;
To_char 函數(shù)對字符的轉換
select to_date('2019年1月29日 10:10:20','yyyy"年"mm"月"dd"日"hh:mi:ss') From dual
to_char函數(shù)對數(shù)字的轉換
下面是在to_char 函數(shù)中經(jīng)常使用的幾種格式:
To_char函數(shù)對數(shù)字的轉換
select last_name, to_char(salary,'$999,999,99') "工資" from employees;
5,通用函數(shù)
下面這些函數(shù)適用于任何數(shù)據(jù)類型,同時也適用于空值:
nvl(n1,n2)
nvl2(n1,n2,n3)
nullif(n1,n2)
coalesce(n1,n2……,nn)
nvl 函數(shù):
將空值轉換成一個已知的值:
select last_name,salary,nvl(commission_pct,0),(salary*12)+ (salary*12*nvl(commission_pct,0)) "工資" from employees;
select last_name, salary, commission_pct, nvl2(commission_pct, 'AA', 'YY') from employees where department_id in (50, 80);
nullif (n1,n2) : 相等返回null,不等返回n1。
select first_name, length(first_name) "n1", last_name, length(last_name) "n2", nullif(length(first_name), length(last_name)) "結果" from employees;
coalesce函數(shù)
(1)coalesce與nvl相比的優(yōu)點在于 coalesce可以同時處理交替的多個值。
(2)如果第一個表達式為空,則返回下一個表達式,對其他的參數(shù)進行coalesce。
select last_name, coalesce(commission_pct, salary, 10) YY from employees order by commission_pct;
條件表達式
(1)在 SQL 語句中使用if-then-else 邏輯
(2)使用兩種方法:
– case表達式
– decode 函數(shù)
select last_name, job_id, salary, case job_id when 'IT_PROG' then 1.10*salary when 'AD_VP' then 1.15*salary when 'AD_PRES' then 1.20*salary else salary end "綜合" from employees;
嵌套函數(shù)
(1)單行函數(shù)可以嵌套。
(2)嵌套函數(shù)的執(zhí)行順序是由內到外。
F3(F2(F1(col,arg1),arg2),arg3)
select last_name, nvl(to_char(manager_id), 'No') from employees;
本篇的單行函數(shù)到這里結束。通過這篇我們應該對單行函數(shù)有初始的了解,深入了解還需要勤加練習。
總結
以上是生活随笔為你收集整理的Oracle 单行函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JQuery,ajax异步加载selec
- 下一篇: Maven之生成测试覆盖度的插件cobe