tutoriais mais recente desenvolvimento web
 

SQL Funções NULL


SQL ISNULL() , NVL() , IFNULL() e COALESCE() Funções

Olhe para o seguinte "Products" tabela:

p_id Nome do Produto Preço unitário Unidades em estoque UnidadesPedidas
1 Jarlsberg 10.45 16 15
2 Mascarpone 32.56 23
3 Gorgonzola 15,67 9 20

Suponha-se que o "UnitsOnOrder" coluna é opcional, e pode conter valores nulos.

Nós temos a seguinte instrução SELECT:

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products

No exemplo acima, se qualquer um dos "UnitsOnOrder" valores são NULL, o resultado é NULL.

Da Microsoft ISNULL() função é usada para especificar a forma como queremos tratar valores nulos.

A NVL() , IFNULL() , e COALESCE() funções também podem ser utilizados para alcançar o mesmo resultado.

Neste caso, queremos valores NULL a ser zero.

Abaixo, se "UnitsOnOrder" é NULL não vai prejudicar o cálculo, porque ISNULL() retorna um zero se o valor for NULL:

MS Access

SELECT ProductName,UnitPrice*(UnitsInStock+IIF(ISNULL(UnitsOnOrder),0,UnitsOnOrder))
FROM Products

SQL Server

SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products

Oracle

Oracle não tem um ISNULL() função. No entanto, podemos usar a NVL() função para obter o mesmo resultado:

SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
FROM Products

MySQL

MySQL tem um ISNULL() função. No entanto, ele funciona um pouco diferente do da Microsoft ISNULL() função.

No MySQL, podemos usar o IFNULL() função, como este:

SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products

ou podemos usar o COALESCE() função, como este:

SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products