Null值的處理、邏輯操作和函數嵌套

Null 值是一個很特別的值。它既不是0,也不是空格。它的值是沒有意義的、未知的、不確定的。 Null 值一般的計算符用的是 ISNULL 和IS NOT NULL 來進行。

升序排序時,Null 排在最後,降序排序時null排在最前。 與NULL參與的算術運算結果均爲NULL

 

邏輯與(AND)算法

在and 邏輯表達式中,只要有F (假)其結果就爲F,如果沒有F,在AND邏輯表達式中有NULL的其結果就爲Null,只有當兩個條件都爲T時,其結果才爲T。

邏輯或(OR) 算法

在OR 邏輯表達式中,只要有T(真)其結果就爲T,如果沒有T,在OR 邏輯表達式中

有NULL的其結果就爲NULL,只有當兩個條件都爲F時,其結果才爲F。

邏輯非(NOT)算法

NOT T =F   NOT F=T    NOT NULL =NULL

 

運算符的優先級:

(1)算術運算符 (2)連接運算符 (3)比較(關係)運算符(4)IS NULL、IS NOT NULL、LIKE 、NOT LIKE、IN、NOT IN運算符(5)between 和Not Between運算符(6)Not 邏輯運算符(7)And邏輯運算符(8)OR 邏輯運算符

 

例如:selectename,job,sal from emp where job=’CLERK’ OR job=’SALEMAN’ AND sal>=1300; 按照運算符優先級,Oracle首先執行由紅體部分組成的條件,然後在執行其他條件。

 

 

NVL空值轉換函數。

因爲與Null進行的算術運算均爲NULL,所以有此函數。

NVL函數用於把一空值(NULL)轉換成某一實際的值,格式如下:

NVL(表達式1,表達式2)

如果表達式1爲空值(NULL),NVL返回值爲表達式2的值,否則返回表達式1的值。表達式1和表達式2可以爲數字型、字符型或日期型,但二者必須一致。例如:

對數字型: NVL(comm,0)

對字符型:NVL (TO_CHAR(comm),’NO Comment’)

對日期型:NVL(hiredate,’31-DEC-99’)

有經驗的開發者經常用此函數來避免因空值(NULL )產生的錯誤。

 

DECODE 函數

因爲SQL中沒有邏輯判斷語句(分支語句),所以Oracle引入了DECODE函數完成類似的功能。

 

Oracle的單值函數可以嵌套。函數的計算次序爲從裏到外。

 

NVL2 是對NVL   的一個擴充

For exemple: NVL2(comm,’sal+comm’,sal)”income”    首先測試comm,如果comm不爲空,就返回表達式sal+comm的值,如果爲空返回sal的值;返回值的列標爲income  

NVL2(表達式1,表達式2,表達式3) 表達式2和表達式3可以是出了LONG以外的任何數據類型,表達式1可以是任何數據類型。如果表達式2和表達式3的數據類型不同,Oracle服務器把表達式3的數據類型轉換成表達式2的數據類型;此時如果表達式3爲空值,Oracle服務器就不進行數據類型轉換。NVL2函數返回值的數據類型與表達式2的數據類型相同。但表達式2的數據類型爲定長字符型CHAR時,NVL2函數返回值的數據類型爲變長字符型VARCHAR2

 

NULLIF函數

NULLIF(表達式1,表達式2)  該函數比較兩個表達式的值,如果相等就返回NULL,如果不等就返回表達式1  ,在此函數中表達式1不能爲NULL

發佈了151 篇原創文章 · 獲贊 45 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章