Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar a instrução CASE no MySQL?

Com uma enorme quantidade de dados sendo gerada todos os dias, é importante recuperar dados com base em algumas condições. Neste artigo sobre a instrução CASE no MySQL, discutirei como usar essa instrução para recuperar dados em uma única condição ou em várias condições.

Os seguintes tópicos serão abordados neste artigo:

  • Introdução ao SQL
  • Qual ​​é a finalidade do SQL?
  • CASE no MySQL
  • Sintaxe de CASE no MySQL
  • Exemplo de CASE no MySQL

O que é SQL?

SQL é uma linguagem específica de domínio que é amplamente usada em programação. Ele foi projetado para gerenciar dados contidos em um sistema de gerenciamento de banco de dados relacional (RDBMS) ou para processamento de fluxo em um sistema de gerenciamento de fluxo de dados relacional. Em geral, SQL é uma linguagem padrão que ajuda a armazenar, manipular e recuperar dados em bancos de dados.

Qual ​​é a finalidade do SQL?

O SQL é basicamente usado para se comunicar com um banco de dados. De acordo com o ANSI (American National Standards Institute), é considerada a linguagem padrão para sistemas de gerenciamento de banco de dados relacional (RDBMS). Usamos instruções SQL para executar tarefas como atualizar, inserir, excluir ou recuperar dados de um banco de dados.

O que é a instrução CASE no MySQL?

A instrução CASE no MySQL é uma maneira de lidar com a lógica if/else. É um tipo de instrução de controle que forma a célula das linguagens de programação, pois elas controlam a execução de outros conjuntos de instruções.

A instrução CASE passa por várias condições e retorna valores conforme e quando a primeira condição é atendida (como uma instrução IF-THEN-ELSE em linguagens de baixo nível). Quando uma condição for verdadeira, ela parará de percorrer e retornará o resultado. Se nenhuma das condições for verdadeira, ele retornará o valor na cláusula ELSE.

Se não houver cláusula ELSE e nenhuma das condições for verdadeira, ele simplesmente retornará NULL.

Sintaxe da instrução CASE no MySQL

Sintaxe básica:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionx THEN resultx
    ELSE result
END;

Pode haver duas maneiras de obter instruções CASE-Switch:
  • Pega uma variável chamada case_value e a corresponde a alguma statement_list.
CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END;
  • Considere uma search_condition em vez de uma variável de igualdade e execute a statement_list de acordo.
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END;

Exemplo de instrução CASE no MySQL


Vamos considerar uma tabela:ESTUDANTE

Tabela de alunos

ID do aluno Nome Departamento Gênero
001 Akash CS M
002 Bicram Mecânico M
003 Canadá CS M
004 Profundidade CS M
005 Elia EC F
006 Fernandes Mecânico F

Exemplo: Considere um cenário em que você precisa modificar os nomes dos departamentos para seus formulários completos. Se o nome do departamento for CS, deve ser convertido para Ciência da Computação; Da mesma forma, Mech deve ser convertido em Mechanical. e EC em Electronic and Communication.

Exemplo de consulta

CASE department_name
WHEN 'CS'
  THEN UPDATE Student SET
  department='Computer Science';
 WHEN 'EC'
  THEN UPDATE Student SET
  department='Electronics and Communication';
 ELSE UPDATE Student SET
 department=’Mechanical';
END;

Saída:


Os nomes de departamentos correspondentes são renomeados da seguinte forma:
ID do aluno Nome Departamento Gênero
001 Akash Ciência da Computação M
002 Bicram Mecânico M
003 Canadá Ciência da Computação M
004 Profundidade Ciência da Computação M
005 Elia Eletrônica e comunicação F
006 Fernandes Mecânico F

Exemplo: Considere um cenário, onde você deve selecionar todos os campos correspondentes à tabela Aluno. Como os valores escritos no campo Gênero são valores de caractere único (M/F), vamos escrever uma consulta para alterar M para Masculino e F para Feminino.

Exemplo de consulta

SELECT Student ID, Name, Department,
CASE Gender
 WHEN'M' THEN 'Male'
 WHEN'F' THEN 'Female'
END
FROM Student;

Saída:

ID do aluno Nome Departamento Gênero
001 Akash Ciência da Computação Masculino
002 Bicram Mecânico Masculino
003 Canadá Ciência da Computação Masculino
004 Profundidade Ciência da Computação Masculino
005 Elia Eletrônica e comunicação Feminino
006 Fernandes Mecânico Feminino

Alternar CASE na classificação personalizada do SQL

Exemplo de consulta

CREATE PROCEDURE GetStudent(@ColToSort varchar(150)) AS
SELECT StudentID, Name, Gender, Department
FROM Student
ORDER BY
  CASE WHEN @ColToSort='Department' THEN Department
       WHEN @ColToSort='Name' THEN Name
       WHEN @ColToSort='Gender' THEN Gender
       ElSE StudentID
  END;

Saída:

A saída é classificada de acordo com o campo fornecido.

O procedimento (função) acima recebe uma variável do tipo de dados varchar como argumento e, com base nisso, classifica as tuplas na tabela Student. Além disso, também podemos usar instruções CASE para comparar condições.

Exemplo: Considere uma tabela chamada CONTACTS que contém contactID e websiteID. De acordo com esses detalhes, um usuário pode navegar por esses links:‘TechOnTheNet.com’ ou ‘CheckYourMath.com’.

Exemplo de consulta

SELECT
CASE
&nbsp;&nbsp;WHEN contact_id < 1000 THEN 'TechOnTheNet.com'
&nbsp;&nbsp;WHEN website_id = 2 THEN 'CheckYourMath.com'
END
FROM contacts;

Deve estar claro agora que ao escrever instruções Case no MySQL, um fator mais importante é 'ordená-las da maneira correta'. Apenas lembre-se de que as condições são avaliadas na ordem listada por você. Uma vez que qualquer condição se torne verdadeira, a instrução CASE retornará o resultado e não avaliará mais as condições. Portanto, tenha cuidado ao selecionar a ordem em que você lista suas condições.

Se você deseja aprender mais sobre o MySQL e conhecer esse banco de dados relacional de código aberto, confira nosso Treinamento de Certificação MySQL DBA que vem com treinamento ao vivo conduzido por instrutor e experiência de projeto de vida. Este treinamento irá ajudá-lo a entender o MySQL em profundidade e ajudá-lo a alcançar o domínio sobre o assunto.

Tem alguma pergunta para nós? Mencione-o na seção de comentários desta “Instrução CASE no MySQL” e entraremos em contato com você.