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