MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como IFNULL() funciona no MariaDB


No MariaDB, o IFNULL() A função nos permite substituir valores NULL por outro valor.

Sintaxe

IFNULL(expr1,expr2)

Se expr1 não é NULL , IFNULL() retorna expr1 ; caso contrário, ele retornará expr2 .

Além disso, do MariaDB 10.3, NVL() pode ser usado como um alias para o IFNULL() função. Portanto, temos a opção de usar a seguinte sintaxe:
NVL(expr1,expr2)

O resultado é o mesmo, independentemente de qual sintaxe é usada.

Exemplo


Aqui está um exemplo básico que usa o NULL constante:
SELECT IFNULL( null, 'No Value' );

Resultado:
No Value

Neste caso, usei IFNULL() para substituir o valor NULL por No Value .

Aqui está o que acontece quando o primeiro argumento não é NULL :
SELECT IFNULL( 'Spicy', 'No Value' );

Resultado:
Spicy

Nesse caso, o primeiro argumento é retornado, pois não é NULL .

Exemplo de banco de dados


Suponha que executemos a seguinte consulta:
SELECT * FROM Employees;

Resultado:
empId	name	dept
-----   -----   -----
1	Jess	Sales
2	Rohit	NULL
3	Zohan	Sales
4	Homer	NULL

Podemos ver que duas linhas têm valores NULL no dept coluna.

Na consulta a seguir, usamos IFNULL() para substituir os valores NULL por um valor mais significativo para o leitor:
SELECT
    empId,
    name,
    IFNULL( dept, 'Not yet assigned' ) AS dept
FROM Employees;

Resultado:
empId	name	dept
-----   -----   ----------------
1	Jess	Sales
2	Rohit	Not yet assigned
3	Zohan	Sales
4	Homer	Not yet assigned

Expressões


O valor atual do primeiro argumento é avaliado. Portanto, se fornecermos uma expressão como a seguinte:
SELECT IFNULL( 3 * 7, 0 );

Obtemos isso:
21

Portanto, não recebemos o 3 * 7 papel. Obtemos o resultado dessa expressão (que neste caso é 21 ).

O mesmo acontece quando o resultado da expressão é NULL . Por exemplo, se executarmos o seguinte código:
SELECT IFNULL( 3 / 0, 0 );

Obtemos isso:
0.0000

No entanto, este é um exemplo perigoso. Zero é um valor. NULL não é.

Retornar zero quando há um valor NULL pode ser enganoso ou até mesmo completamente errado. Imagine se estivéssemos lidando com preços. Poderíamos terminar com um preço zero, o que poderia ser incorreto e custar muito dinheiro ao negócio.

Portanto, nesses casos, geralmente é melhor usar um valor mais significativo que transmita ao leitor que não há valor.

Exemplo:
SELECT IFNULL( 3 / 0, 'No value' );

Resultado:
No Value

O NVL() Função


A partir do MariaDB 10.3, NVL() é um alias para IFNULL() . Portanto, podemos substituir IFNULL() com NVL() em qualquer um dos exemplos acima.

Exemplo:
SELECT NVL( 3 / 0, 'No value' );

Resultado:
No Value