① SQL中 nvl()、coalesce()、decode()這三個函數,如果只是判斷非空的話,哪一個效率相比較高
nvl只支持2個參數,這是oracle特有的
coalesce支持不定參數,coalesce(bonus,0,1)應該寫成coalesce(bonus,0),最後1個不用寫,這是ansi標准函數,在多次外連接時尤其有用,譬如 t1 full join t2 on t1.id=t2.id full join t3 on coalesce(t1.id,t2.id)=t3.id full join t4 on coalesce(t1.id,t2.id,t3.id)=t4.id
decode判斷不了非空
② 在sql語句中nvl是什麼意思
就是一個空值判斷的函數,相當於if...else...,如果變數為null,則取後面的值,不為空,則取變數的值。
③ nvl、nvl2、nullif、coalesce函數的區別
NVL函數的格式如下:NVL(expr1,expr2)
含義是:如果oracle第一個參數為空那麼顯示第二個參數的值,如果第一個參數的值不為空,則顯示第一個參數本來的值。
例如:
SQL> select ename,NVL(comm, -1) from emp;
NVL2函數的格式如下:NVL2(expr1,expr2, expr3)
含義是:如果該函數的第一個參數為空那麼顯示第二個參數的值,如果第一個參數的值不為空,則顯示第三個參數的值。SQL> select ename,NVL2(comm,-1,1) from emp;
NULLIF(exp1,expr2)函數的作用是如果exp1和exp2相等則返回空(NULL),否則返回第一個值。
下面是一個例子。使用的是oracle中HR schema,如果HR處於鎖定,請啟用
這里的作用是顯示出那些換過工作的人員原工作,現工作。
SQL> SELECT e.last_name, e.job_id,j.job_id,NULLIF(e.job_id, j.job_id) 「Old Job ID」
FROM employees e, job_history j
WHERE e.employee_id = j.employee_id
ORDER BY last_name;
Coalese函數的作用是的NVL的函數有點相似,其優勢是有更多的選項。
格式如下:
Coalesce(expr1, expr2, expr3….. exprn)
表示可以指定多個表達式的佔位符。所有表達式必須是相同類型,或者可以隱性轉換為相同的類型。
返回表達式中第一個非空表達式,如有以下語句: SELECT COALESCE(NULL,NULL,3,4,5) FROM al 其返回結果為:3
如果所有自變數均為 NULL,則 COALESCE 返回 NULL 值。 COALESCE(expression1,...n) 與此 CASE 函數等價:
這個函數實際上是NVL的循環使用,在此就不舉例子了。
④ 在sql語句中nvl是什麼意思
NVL(ARG,VALUE)達標如果前面的ARG值為NULL那麼返回的值為後面的VALUE二者結合使用:
DECODE(NVL(M01.NINUSI_NM,''),'','-',M01.NINUSI_NM)
首先判斷--若M01.NINUSI_NM是否為空.若為空賦給空值[NVL函數]
其次,判斷取出的欄位是否為空,如果是則賦給'-'
最後的默認處理是M01.NINUSI.NM。
⑤ 資料庫sql語句length(NVL(RZSJ,''))是什麼意思
都是oracle的函數..
length()用於計算字元串長度,在mssql中對應函數為len()
nvl是NULL值替換函數,判斷參數1為NULL的情況下替換輸出參數2,
在mssql中的對應函數為isnull()
length(NVL(RZSJ,''))
輸出RZSJ列值的長度,如果為NULL則輸出空字元串的長度(0)
⑥ 在oracle中函數NVL是什麼意思
nvl(a,b) 意思是當a的值為null時候,就返回b的值,否則返回a的值
⑦ oracle語法nvl,sign與round什麼意思
這些都是oracle內置函數
nvl帶兩個參數 nvl(n1,n2):當n1為『null』時 返回n2;
sign 帶一個參數 sign(n),當n<0 ,返回-1,當n=0返回0,當n>0返回1;
round帶一個參數(或者兩個) round(n,m)/round(n)
當m>0四捨五入為m位小數,如果m小於0則四捨五入到小數點向左第m位(第二個參數m如果不為整數如2.1,則截取m整數部分)
這些函數你可以用這樣的語句測試下,印象會更深刻
select 函數 from al;
⑧ 「select sal+nvl(comm,0)from emp」是什麼意思
avg是查詢平均數的函數
nvl是oracle中空則為另一個數。
這個語句是查詢emp表中sal欄位的平均值。
即總的sal值除以總行數得到的值。
例如
sal
1
2
null
3
4
這5行數據,運行之後,得到的值是2
⑨ sql NVL 是什麼
這是oracle的寫法。
1.nvl是個函數,作用是如果第一個參數為空值,則返回第二個參數的值,否則返回第一個參數的值。
2.(+)表示外連接,就是在做關聯之後,y表中存在而x表中不存在的數據也能查出來。
⑩ 在oracle中NVL是什麼意思
NVL(coloum, 0) 的意思是 如果 coloum 是NULL, 則取 0值
通過查詢獲得某個欄位的值,如果這個值為null將給出一個預設的默認值