NVL和NVL2兩個函數雖然不經常用,但是偶爾也會用到,所以了解一下。
語法:
--如果表達式1為空則顯示表達式2的值,如果表達式1不為空,則顯示表達式1的值 NVL(表達式1,表達式2); --如果字段1為空,則顯示字段2的值,如果字段1不為空則顯示字段1的值 NVL(字段1,字段2); --如果表達式1為空,則顯示表達式2的值,如果不為空則顯示表達式3的值 NVL2(表達式1,表達式2,表達式3) --如果字段1為空則顯示字段2的值,如果字段1不為空則顯示字段3的值 NVL2(字段1,字段2,字段3)
比如有表:SYS_USER_INFO,表中有其中三個字段:REAL_NAME,NICK_NAME,NET_NAME。
需求;如果REAL_NAME為空,則查詢NET_NAME,不為空則查詢REAL_NAME:
SELECT NVL(REAL_NAME,NET_NAME) AS NAME FROM SYS_USER_INFO
在項目中有時需要在查詢時預留幾個備用字段,也可以通過NVL2來實現,如:
NVL2('SPARE','','') AS SPARE
這樣無論如何都會有個SPARE為空的字段。