Sql nvl意思
在SQL中,NVL(或NVL2)是Oracle資料庫特有的函式,用於處理NULL值。這些函式允許你指定一個默認值,以便在遇到NULL值時返回該默認值,而不是NULL。
NVL函式的基本語法如下:
NVL(expression1, expression2)
其中:
expression1
是任何有效的SQL表達式。expression2
是當expression1
為NULL時返回的替代值。
函式NVL
的返回值是expression1
和 expression2
中非NULL值的第一個。如果expression1
和 expression2
都是NULL,則返回NULL。
例如,如果你有一個雇員表,其中有一個名為SALARY
的列,你想要計算所有雇員的平均工資,但是你不想包括那些沒有工資記錄的雇員(即SALARY
為NULL的雇員),你可以這樣做:
SELECT AVG(NVL(SALARY, 0)) AS avg_salary
FROM employees;
在這個例子中,NVL(SALARY, 0)
會用0替換SALARY
列中的NULL值,然後AVG()
函式會對這些值進行平均。
NVL2函式與NVL函式類似,但是它多提供一個參數,用於在expression1
為NULL時返回一個不同的值。它的基本語法如下:
NVL2(expression1, value1, value2)
其中:
expression1
是任何有效的SQL表達式。value1
是當expression1
不為NULL時返回的值。value2
是當expression1
為NULL時返回的值。
函式NVL2
的返回值是expression1
的值,如果expression1
為NULL,則返回value2
。
例如,如果你想要計算一個雇員的工資,但是你不想顯示工資為NULL的雇員的姓名,你可以這樣做:
SELECT name, NVL2(salary, salary, 0) AS salary
FROM employees;
在這個例子中,NVL2(salary, salary, 0)
會返回salary
列的值,如果salary
為NULL,則返回0。這樣,工資為NULL的雇員的姓名和工資就不會顯示在結果集中。