Resumo : neste tutorial, você aprenderá sobre a função MySQL IFNULL , que é uma função de fluxo de controle muito útil para lidar com valores NULL.
Introdução à função MySQL IFNULL
A função MySQL IFNULL
é uma das funções de fluxo de controle do MySQL que aceita dois argumentos e retorna o primeiro argumento se não for NULL
. Caso contrário, a IFNULL
função retornará o segundo argumento.
Os dois argumentos podem ser valores literais ou expressões.
O seguinte ilustra a sintaxe da IFNULL
função:
IFNULL(expression_1,expression_2);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A IFNULL
função retorna expression_1
se expression_1
não for NULL
; caso contrário, ele retorna expression_2
. O
A IFNULL
função retorna uma string ou um número com base no contexto onde é usada.
Se você deseja retornar um valor baseado em TRUE
ou FALSE
uma condição diferente de NULL
, você deve usar a função SE .
Exemplos de funções IFNULL do MySQL
Veja os seguintes IFNULL
exemplos de funções:
SELECT IFNULL(1,0); -- returns 1
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
SELECT IFNULL('',1); -- returns ''
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
SELECT IFNULL(NULL,'IFNULL function'); -- returns IFNULL function
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Como funciona.
-
IFNULL(1,0)
retorna 1 porque 1 não éNULL
. IFNULL(' ',1)
retorna' '
porque a' '
string não éNULL
.IFNULL(NULL,'IFNULL function')
retornaIFNULL function
string porque o primeiro argumento éNULL
.
Vejamos um exemplo prático de utilização da IFNULL
função.
Primeiro, crie uma nova tabela nomeada contacts
usando a seguinte instrução:
CREATE TABLE IF NOT EXISTS contacts (
contactid INT AUTO_INCREMENT PRIMARY KEY,
contactname VARCHAR(20) NOT NULL,
bizphone VARCHAR(15),
homephone VARCHAR(15)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Cada contato possui um nome, telefone comercial e telefone residencial.
Segundo, insira os dados na contacts
tabela:
INSERT INTO contacts(contactname,bizphone,homephone)
VALUES('John Doe','(541) 754-3009',NULL),
('Cindy Smith',NULL,'(541) 754-3110'),
('Sue Greenspan','(541) 754-3010','(541) 754-3011'),
('Lily Bush',NULL,'(541) 754-3111');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Alguns contatos possuem apenas telefone residencial ou comercial. Para obter todos os nomes e telefones dos contatos da contacts
tabela, você usa a seguinte consulta:
SELECT
contactName, bizphone, homephone
FROM
contacts;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Seria bom se pudéssemos obter o telefone residencial do contato, caso o telefone comercial do contato não esteja disponível. É aqui que
É aqui que a IFNULL
função entra em ação. A IFNULL
função retorna o telefone residencial se o telefone comercial for NULL
.
Terceiro, use a seguinte consulta para obter os nomes e telefones de todos os contatos:
SELECT
contactname, IFNULL(bizphone, homephone) phone
FROM
contacts;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que você deve evitar usar a IFNULL
função na cláusula WHERE , pois ela degrada o desempenho da consulta. Se você quiser verificar se um valor é
Se quiser verificar se um valor é NULL
ou não, você pode usar IS NULL
ou IS NOT NULL
na WHERE
cláusula.
Neste tutorial, apresentamos a IFNULL
função MySQL e mostramos como usá-la IFNULL
nas consultas.