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的雇員的姓名和工資就不會顯示在結果集中。