Sql nvl意思

在SQL中,NVL(或NVL2)是Oracle資料庫特有的函式,用於處理NULL值。這些函式允許你指定一個默認值,以便在遇到NULL值時返回該默認值,而不是NULL。

NVL函式的基本語法如下:

NVL(expression1, expression2)

其中:

函式NVL 的返回值是expression1expression2 中非NULL值的第一個。如果expression1expression2 都是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)

其中:

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