Oracle中常用的COALESCE、NVL、NVL2和NULLIF函數(shù)
在Oracle數(shù)據(jù)庫中,有許多函數(shù)可以進(jìn)行數(shù)據(jù)處理和轉(zhuǎn)換。其中,COALESCE、NVL、NVL2和NULLIF函數(shù)是常用的四種函數(shù)之一。COALESCE函數(shù)COALESCE函數(shù)用于返回其參數(shù)中第一個
在Oracle數(shù)據(jù)庫中,有許多函數(shù)可以進(jìn)行數(shù)據(jù)處理和轉(zhuǎn)換。其中,COALESCE、NVL、NVL2和NULLIF函數(shù)是常用的四種函數(shù)之一。
COALESCE函數(shù)
COALESCE函數(shù)用于返回其參數(shù)中第一個非空表達(dá)式。它的語法如下:
COALESCE(expression [, ...n])
其中,expression表示要檢查的表達(dá)式,n可以指定多個表達(dá)式,所有表達(dá)式必須是相同類型。COALESCE函數(shù)返回第一個不為空的值,如果所有表達(dá)式均為空,則返回空。下面是一個示例:
SELECT COALESCE(null, null, 'test', null, 'example') as result FROM dual;
運行結(jié)果為:
RESULT
-------
test
在這個例子中,COALESCE函數(shù)被用于比較多個空值和一個非空值,它返回了第一個非空值。
NVL函數(shù)
NVL函數(shù)用于返回兩個表達(dá)式的非空值。它的語法如下:
NVL(expression1, expression2)
其中,expression1表示要檢查的表達(dá)式,expression2是默認(rèn)值。如果expression1不為空,則返回expression1,否則返回expression2。expression1和expression2必須是相同類型,或者可以隱式轉(zhuǎn)換為相同類型。下面是一個示例:
SELECT NVL(10, 0) as result FROM dual;
運行結(jié)果為:
RESULT
-------
10
在這個例子中,NVL函數(shù)被用于比較一個非空值和一個默認(rèn)值,它返回了非空值。
NVL2函數(shù)
NVL2函數(shù)根據(jù)表達(dá)式是否為空,返回不同的值。它的語法如下:
NVL2(expression1, expression2, expression3)
其中,expression1表示要檢查的表達(dá)式,expression2是當(dāng)expression1不為空時返回的值,expression3是當(dāng)expression1為空時返回的值。expression2和expression3類型不同的話,expression3會轉(zhuǎn)換為expression1的類型。下面是一個示例:
SELECT NVL2(null, 'not null', 'null') as result FROM dual;
運行結(jié)果為:
RESULT
-------
null
在這個例子中,NVL2函數(shù)被用于比較一個空值和一個非空值,它返回了空值。
NULLIF函數(shù)
NULLIF函數(shù)根據(jù)表達(dá)式是否相等,返回不同的內(nèi)容。它的語法如下:
NULLIF(expression1, expression2)
其中,expression1表示要檢查的表達(dá)式,expression2是要比較的值。如果expression1和expression2相等,則返回空值,否則返回expression1的值,并且expression1不能為空。下面是一個示例:
SELECT NULLIF('test', 'test') as result FROM dual;
運行結(jié)果為:
RESULT
-------
null
在這個例子中,NULLIF函數(shù)被用于比較兩個相等的值,它返回了空值。
總結(jié)
本文介紹了Oracle中常用的COALESCE、NVL、NVL2和NULLIF函數(shù),并給出了相關(guān)的語法和示例。這些函數(shù)可以幫助我們在處理數(shù)據(jù)時更加靈活和高效。