Função SE do MySQL

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 IFfunção às vezes é chamada de IF ELSEou IF THEN ELSEfunção.

A sintaxe da IFfunção MySQL é a seguinte:

IF(expr,if_true_expr,if_false_expr)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Se for expravaliado como TRUE, ou seja, exprnão é NULLe exprnão é 0, a IFfunção retorna if_true_expr, caso contrário, retorna. if_false_exprA IFfunçã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 FROMcláusulas e outras da seguinte forma:

SELECT IF(1 = 2,'true','false'); -- falseLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

SELECT IF(1 = 1,' true','false'); -- trueLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Exibindo N/A em vez de NULL usando a função MySQL IF

Vamos dar uma olhada nos dados da customerstabela do banco de dados de exemplo .

Na customerstabela, muitos clientes não possuem dados de estado na statecoluna, portanto, quando selecionamos clientes, a coluna de estado exibe NULLvalores, 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 )

Experimente

Tabela de clientes MySQL IF

Podemos melhorar a saída usando a IFfunçã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 )

Experimente

MySQL SE N/A em vez de NULL

Função MySQL IF com funções agregadas

MySQL SUM IF – Combinando a função IF com a função SUM

A IFfunçã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 )

Experimente

MySQL SOMA SE

Na consulta acima, se o status do pedido for shippedou cancelled , a função IF retornará 1, caso contrário, retornará 0. A SUMfunção calcula o número total de pedidos shippede cancelledcom base no valor retornado da IFfunção.

MySQL COUNT IF – Combinando a função IF com a função COUNT

Primeiro, selecionamos status de pedidos distintos na orderstabela usando a seguinte consulta:

SELECT DISTINCT
    status
FROM
    orders
ORDER BY status;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Status do pedido

Em segundo lugar, podemos obter o número de pedidos em cada status combinando a IFfunção com a COUNTfunção. Como a COUNTfunção não conta NULLvalores, a IFfunção retorna NULLse 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 )

Experimente

MySQL COUNT IF - status dos pedidos

Claro, você pode obter resultados semelhantes usando a cláusula GROUP BY e a COUNTfunção sem usar a IFfunção como a seguinte consulta:

SELECT status, COUNT(STATUS)
FROM orders
GROUP BY statusLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Neste tutorial, apresentamos a IFfunção MySQL que ajuda você a escrever uma consulta com condição incorporada na SELECTcláusula.

Referência

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *