SQLite
 sql >> Base de données >  >> RDS >> SQLite

CAS SQLite

Résumé : dans ce tutoriel, vous découvrirez le SQLite CASE expression pour ajouter la logique conditionnelle à une requête.

Le CASE SQLite expression évalue une liste de conditions et renvoie une expression basée sur le résultat de l'évaluation.

Le CASE l'expression est similaire à IF-THEN-ELSE instruction dans d'autres langages de programmation.

Vous pouvez utiliser le CASE expression dans toute clause ou instruction qui accepte une expression valide. Par exemple, vous pouvez utiliser le CASE expression dans des clauses telles que WHERE , ORDER BY , HAVING , SELECT et des instructions telles que SELECT , UPDATE , et DELETE .

SQLite fournit deux formes de CASE expression :simple CASE et recherché CASE .

SQLite simple CASE expression

Le simple CASE expression compare une expression à une liste d'expressions pour renvoyer le résultat. Ce qui suit illustre la syntaxe du simple CASE expression.

CASE case_expression
     WHEN when_expression_1 THEN result_1
     WHEN when_expression_2 THEN result_2
     ...
     [ ELSE result_else ] 
ENDCode language: SQL (Structured Query Language) (sql)

Le simple CASE expression compare le case_expression à l'expression apparaît dans le premier WHEN clause, when_expression_1 , pour l'égalité.

Si le case_expression est égal à when_expression_1 , le simple CASE retourne l'expression dans le THEN correspondant clause, qui est le result_1 .

Sinon, le simple CASE expression compare le case_expression avec l'expression dans le WHEN suivant clause.

En l'absence de case_expression correspond à when_expression , le CASE l'expression renvoie le result_else dans le ELSE clause. Si vous omettez le ELSE clause, le CASE l'expression renvoie NULL.

Le simple CASE expression utilise une évaluation de court-circuit. En d'autres termes, il renvoie le résultat et arrête d'évaluer les autres conditions dès qu'il trouve une correspondance.

Simple CASE exemple

Jetons un coup d'œil aux customers table dans la base de données exemple.

Supposons que vous deviez faire un rapport des groupes de clients avec la logique que si un client se situe aux États-Unis, ce client appartient au groupe national, sinon le client appartient au groupe étranger.

Pour faire ce rapport, vous utilisez le simple CASE expression dans le SELECT déclaration comme suit :

SELECT customerid,
       firstname,
       lastname,
       CASE country 
           WHEN 'USA' 
               THEN 'Domestic' 
           ELSE 'Foreign' 
       END CustomerGroup
FROM 
    customers
ORDER BY 
    LastName,
    FirstName;Code language: SQL (Structured Query Language) (sql)

Essayez-le

SQLite a recherché CASE expression

Le CASE recherché expression évalue une liste d'expressions pour décider du résultat. Notez que le simple CASE l'expression ne compare que l'égalité, tandis que le CASE recherché l'expression peut utiliser n'importe quelle forme de comparaison.

Ce qui suit illustre la syntaxe du CASE recherché expression.

CASE
     WHEN bool_expression_1 THEN result_1
     WHEN bool_expression_2 THEN result_2
     [ ELSE result_else ] 
ENDCode language: SQL (Structured Query Language) (sql)

Le CASE recherché expression évalue les expressions booléennes dans la séquence spécifiée et renvoie le résultat correspondant si l'expression est évaluée à true.

Si aucune expression n'est évaluée comme vraie, le CASE recherché expression renvoie l'expression dans le ELSE clause si elle est spécifiée. Si vous omettez le ELSE clause, le CASE recherché l'expression renvoie NULL .

Similaire au simple CASE expression, le CASE recherché l'expression arrête l'évaluation lorsqu'une condition est remplie.

Recherché CASE exemple

Nous utiliserons les tracks table pour la démonstration.

Supposons que vous souhaitiez classer les pistes en fonction de leur longueur, par exemple moins d'une minute, la piste est courte ; entre 1 et 5 minutes, la piste est moyenne; supérieure à 5 minutes, la piste est longue.

Pour ce faire, vous utilisez le CASE recherché expression comme suit :

SELECT
	trackid,
	name,
	CASE
		WHEN milliseconds < 60000 THEN
			'short'
		WHEN milliseconds > 60000 AND milliseconds < 300000 THEN 'medium'
		ELSE
			'long'
		END category
FROM
	tracks;Code language: SQL (Structured Query Language) (sql)

Essayez-le

Dans ce tutoriel, vous avez découvert SQLite CASE expression pour former une logique conditionnelle dans une requête SQL.