Resumo : neste tutorial, você aprenderá como usar a função MySQL IF que retorna um valor com base em uma determinada condição.
Introdução à função MySQL IF
A função MySQL IF
é uma das funções de fluxo de controle do MySQL que retorna um valor com base em uma condição. A IF
função às vezes é chamada de IF ELSE
ou IF THEN ELSE
função.
A sintaxe da IF
função MySQL é a seguinte:
IF(expr,if_true_expr,if_false_expr)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Se for expr
avaliado como TRUE
, ou seja, expr
não é NULL
e expr
não é 0, a IF
função retorna if_true_expr
, caso contrário, retorna. if_false_expr
A IF
função retorna um número ou uma string, dependendo de como é usada.
A função IF que abordamos neste tutorial é diferente da instrução IF .
Exemplos de funções MySQL IF
Vamos praticar com vários exemplos para ver como funciona a função MySQL IF.
Um exemplo simples de função IF
Você pode usar a função IF diretamente na instrução SELECT sem as FROM
cláusulas e outras da seguinte forma:
SELECT IF(1 = 2,'true','false'); -- false
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
SELECT IF(1 = 1,' true','false'); -- true
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Exibindo N/A em vez de NULL usando a função MySQL IF
Vamos dar uma olhada nos dados da customers
tabela do banco de dados de exemplo .
Na customers
tabela, muitos clientes não possuem dados de estado na state
coluna, portanto, quando selecionamos clientes, a coluna de estado exibe NULL
valores, o que não é significativo para fins de relatório. Veja a seguinte consulta:
SELECT
customerNumber, customerName, state, country
FROM
customers;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Podemos melhorar a saída usando a IF
função para retornar N/A se o estado for NULL como a seguinte consulta:
SELECT
customerNumber,
customerName,
IF(state IS NULL, 'N/A', state) state,
country
FROM
customers;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Função MySQL IF com funções agregadas
MySQL SUM IF – Combinando a função IF com a função SUM
A IF
função é útil quando combinada com uma função agregada. Suponha que se você deseja saber quantos pedidos foram enviados e cancelados, você pode usar a função IF com a função agregada SUM como a seguinte consulta:
SELECT
SUM(IF(status = 'Shipped', 1, 0)) AS Shipped,
SUM(IF(status = 'Cancelled', 1, 0)) AS Cancelled
FROM
orders;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Na consulta acima, se o status do pedido for shipped
ou cancelled
, a função IF retornará 1, caso contrário, retornará 0. A SUM
função calcula o número total de pedidos shipped
e cancelled
com base no valor retornado da IF
função.
MySQL COUNT IF – Combinando a função IF com a função COUNT
Primeiro, selecionamos status de pedidos distintos na orders
tabela usando a seguinte consulta:
SELECT DISTINCT
status
FROM
orders
ORDER BY status;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Em segundo lugar, podemos obter o número de pedidos em cada status combinando a IF
função com a COUNT
função. Como a COUNT
função não conta NULL
valores, a IF
função retorna NULL
se o status não estiver no status selecionado, caso contrário retorna 1. Veja a consulta a seguir:
SELECT
COUNT(IF(status = 'Cancelled', 1, NULL)) Cancelled,
COUNT(IF(status = 'Disputed', 1, NULL)) Disputed,
COUNT(IF(status = 'In Process', 1, NULL)) 'In Process',
COUNT(IF(status = 'On Hold', 1, NULL)) 'On Hold',
COUNT(IF(status = 'Resolved', 1, NULL)) 'Resolved',
COUNT(IF(status = 'Shipped', 1, NULL)) 'Shipped'
FROM
orders;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Claro, você pode obter resultados semelhantes usando a cláusula GROUP BY e a COUNT
função sem usar a IF
função como a seguinte consulta:
SELECT status, COUNT(STATUS)
FROM orders
GROUP BY status
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste tutorial, apresentamos a IF
função MySQL que ajuda você a escrever uma consulta com condição incorporada na SELECT
cláusula.