本節主要學習內容為通用函式,包括如下圖所示
說明
nvl為式1為null值以外的數是式1,null 值得時候則為式2
if(式1 != null)
else
寫法
nvl(式1,式2)
-----------
eg:select ename,sal,sal+nvl(comm,0)
from employees
/*當獎金為null,設定為0*/
注意
說明
nvl為式1為null值以外的數是式2,null 值得時候則為式3
if(式1 != null)
else
寫法
nvl2(式1,式2,式3)
-----------
eg:select ename,sal,sal+nvl(comm,10000,0)
from employees
/*當獎金為null,設定為0,否則為10000*/
注意
說明
nullif為式1與式2相比較,相等的情況下為null,不相等的情況下為式1;
if(式1 == 式2)
else
寫法
nullif(式1,式2)
-----------
eg:select ename,sal,nullif(comm,sal/10)
from employees
sql> select nullif(50,50) from dual;
nullif(50,50)
-------------
sql> select nullif(50,30) from dual;
nullif(50,30)
-------------
50
注意
說明
coalesce返回表示式列表中的第乙個非null expr。 必須指定多個表示式。 如果所有expr的計算結果都為null,則該函式返回null。
if(式1 == null) else
if(式2 == null)
...else
if(式n == null) else
寫法
coalesce(式1,式2[,式n])
-----------
eg:select eno,ename, nickname,coalesce(ename,nickname,to_char(eno))
from employees
/*查詢名稱,如果名字為空,則為暱稱,如果暱稱也為空,則是id*/
注意
說明
使用case表示式,可以在不呼叫過程的情況下使用sql … then … else邏輯。
switch( 式 )
寫法
case 式 when 條件式1 then 數值1
[when 條件式2 then 數值2]
[when 條件式3 then 數值3...]
else 數值4
end-----------
eg:select ename,sal,(case
when sal < 230000
then
'a'when sal < 380000
then
'b'end) sal_level
from employees;
/*規定不同的工資等級*/
注意
說明
decode將式與每個條件式逐一進行比較。如果expr等於條件式,oracle資料庫將返回相應的結果。如果找不到匹配的值,則返回預設值。如果省略預設值,則返回null。
switch( 式 )
寫法
decode (式,條件式1,數值1
[, 條件式2,數值2]
[,條件式3, 數值3...]
[, 數值4])
-----------
eg:select deptno,ename,sal,decode(deptno,10,sal*1.1,
20,sal*1.2,
sal*1.5)new_sal
from employees;
/*根據部門,,調整新的工資*/
注意
oracle12c建立使用者
本人在centos7安裝好資料庫 oracle12c 準備建立乙個使用者的時候 報錯了,如下 sql create user bpmx3 identified by bpmx3 create user bpmx3 identified by bpmx3 error at line 1 ora 650...
Oracle 12C 安裝異常
報錯 一 ins 30131 1.以管理員執行setup.exe 2.管理員要有c盤的讀寫許可權 控制面板 所有控制面板項 管理工具 計算機管理 系統工具 共享資料夾 共享 3.regedit hkey local machine system currentcontrolset services ...
oracle12c基本操作
select userenv language from dual sqlplus 使用者名稱 密碼 sqlplus as sysdba create user c fds identified by fds123 其中c fds為使用者名稱,fds123為密碼 grant create sessi...