Resumo: neste tutorial, você aprenderá sobre a CASE
expressão SQLite para adicionar a lógica condicional a uma consulta.
A CASE
expressão SQLite avalia uma lista de condições e retorna uma expressão baseada no resultado da avaliação.
A CASE
expressão é semelhante à IF-THEN-ELSE
instrução em outras linguagens de programação.
Você pode usar a CASE
expressão em qualquer cláusula ou instrução que aceite uma expressão válida. Por exemplo, você pode usar a expressão CASE
em cláusulas como WHERE
, ORDER BY
, e instruções como , e .HAVING
SELECT
SELECT
UPDATE
DELETE
SQLite fornece duas formas de CASE
expressão: simples CASE
e pesquisada CASE
.
CASE
Expressão simples SQLite
A expressão simples CASE
compara uma expressão a uma lista de expressões para retornar o resultado. O seguinte ilustra a sintaxe da CASE
expressão simples.
CASE case_expression
WHEN when_expression_1 THEN result_1
WHEN when_expression_2 THEN result_2
...
[ ELSE result_else ]
END
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A expressão simples CASE
compara the case_expression
com a expressão que aparece na primeira WHEN
cláusula, when_expression_1
, para igualdade.
Se for case_expression
igual a when_expression_1
, o simples CASE
retorna a expressão na THEN
cláusula correspondente, que é o result_1
.
Caso contrário, a expressão simples CASE
compara the case_expression
com a expressão na próxima WHEN
cláusula.
Caso não case_expression
corresponda a when_expression
, a CASE
expressão retorna result_else
na ELSE
cláusula. Se você omitir a ELSE
cláusula, a CASE
expressão retornará NULL.
A expressão simples CASE
usa avaliação de curto-circuito. Em outras palavras, ele retorna o resultado e para de avaliar outras condições assim que encontra uma correspondência.
CASE
Exemplo simples
Vamos dar uma olhada na customers
tabela do banco de dados de exemplo .
Suponha que você tenha que fazer um relatório dos grupos de clientes com a lógica de que se um cliente estiver localizado nos EUA, esse cliente pertence ao grupo nacional, caso contrário o cliente pertence ao grupo estrangeiro.
Para fazer este relatório, você usa a CASE
expressão simples na SELECT
declaração da seguinte forma:
SELECT customerid,
firstname,
lastname,
CASE country
WHEN 'USA'
THEN 'Domestic'
ELSE 'Foreign'
END CustomerGroup
FROM
customers
ORDER BY
LastName,
FirstName;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
CASE
Expressão pesquisada SQLite
A CASE
expressão pesquisada avalia uma lista de expressões para decidir o resultado. Observe que a CASE
expressão simples compara apenas por igualdade, enquanto a CASE
expressão pesquisada pode usar qualquer forma de comparação.
O seguinte ilustra a sintaxe da CASE
expressão pesquisada.
CASE
WHEN bool_expression_1 THEN result_1
WHEN bool_expression_2 THEN result_2
[ ELSE result_else ]
END
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A CASE
expressão pesquisada avalia as expressões booleanas na sequência especificada e retorna o resultado correspondente se a expressão for avaliada como verdadeira.
Caso nenhuma expressão seja avaliada como verdadeira, a CASE
expressão pesquisada retornará a expressão na ELSE
cláusula, se especificada. Se você omitir a cláusula, a expressão ELSE
pesquisada retornará .CASE
NULL
Semelhante à CASE
expressão simples, a CASE
expressão pesquisada interrompe a avaliação quando uma condição é atendida.
CASE
Exemplo pesquisado
Usaremos a tracks
tabela para a demonstração.
Suponha que você queira classificar as faixas com base em sua duração, como menos de um minuto, a faixa é curta; entre 1 e 5 minutos, a pista é média; superior a 5 minutos, a pista é longa.
Para conseguir isso, você usa a CASE
expressão pesquisada da seguinte forma:
SELECT
trackid,
name,
CASE
WHEN milliseconds < 60000 THEN
'short'
WHEN milliseconds > 60000 AND milliseconds < 300000 THEN 'medium'
ELSE
'long'
END category
FROM
tracks;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste tutorial, você aprendeu sobre CASE
a expressão SQLite para formar lógica condicional dentro de uma consulta SQL.