sql >> Database >  >> RDS >> SQLite

SQLite GEVAL

Samenvatting: in deze tutorial leer je over de SQLite CASE expressie om de voorwaardelijke logica aan een query toe te voegen.

De SQLite CASE expressie evalueert een lijst met voorwaarden en retourneert een expressie op basis van het resultaat van de evaluatie.

De CASE uitdrukking is vergelijkbaar met de IF-THEN-ELSE statement in andere programmeertalen.

U kunt de CASE . gebruiken uitdrukking in een clausule of verklaring die een geldige uitdrukking accepteert. U kunt bijvoorbeeld de CASE . gebruiken uitdrukking in clausules zoals WHERE , ORDER BY , HAVING , SELECT en uitspraken zoals SELECT , UPDATE , en DELETE .

SQLite biedt twee vormen van de CASE uitdrukking:eenvoudig CASE en zocht CASE .

SQLite eenvoudige CASE uitdrukking

De eenvoudige CASE expression vergelijkt een expressie met een lijst met expressies om het resultaat te retourneren. Het volgende illustreert de syntaxis van de eenvoudige CASE uitdrukking.

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)

De eenvoudige CASE expressie vergelijkt de case_expression naar de uitdrukking verschijnt in de eerste WHEN clausule, when_expression_1 , voor gelijkheid.

Als de case_expression is gelijk aan when_expression_1 , de eenvoudige CASE geeft de uitdrukking terug in de corresponderende THEN clausule, dat is de result_1 .

Anders, de eenvoudige CASE expressie vergelijkt de case_expression met de uitdrukking in de volgende WHEN clausule.

Indien geen case_expression komt overeen met de when_expression , de CASE expressie geeft de result_else in de ELSE clausule. Als u de ELSE . weglaat clausule, de CASE expressie geeft NULL terug.

De eenvoudige CASE expressie maakt gebruik van kortsluiting evaluatie. Met andere woorden, het geeft het resultaat terug en stopt met het evalueren van andere voorwaarden zodra het een overeenkomst vindt.

Eenvoudige CASE voorbeeld

Laten we eens kijken naar de customers tabel in de voorbeelddatabase.

Stel dat u een rapport moet maken van de klantgroepen met de logica dat als een klant zich in de VS bevindt, deze klant tot de binnenlandse groep behoort, anders behoort de klant tot de buitenlandse groep.

Om dit rapport te maken, gebruikt u de eenvoudige CASE uitdrukking in de SELECT verklaring als volgt:

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)

Probeer het

SQLite doorzocht CASE uitdrukking

De gezochte CASE expression evalueert een lijst met expressies om het resultaat te bepalen. Merk op dat de eenvoudige CASE uitdrukking vergelijkt alleen voor gelijkheid, terwijl de gezochte CASE expressie kan elke vorm van vergelijking gebruiken.

Het volgende illustreert de syntaxis van de gezochte CASE uitdrukking.

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)

De gezochte CASE expression evalueert de Booleaanse expressies in de opgegeven reeks en retourneert het bijbehorende resultaat als de expressie wordt geëvalueerd naar true.

Als geen enkele uitdrukking als waar evalueert, wordt de gezochte CASE expressie retourneert de expressie in de ELSE clausule indien gespecificeerd. Als u de ELSE . weglaat clausule, de gezochte CASE expressie retourneert NULL .

Vergelijkbaar met de eenvoudige CASE uitdrukking, de gezochte CASE expressie stopt de evaluatie wanneer aan een voorwaarde is voldaan.

Gezocht CASE voorbeeld

We gebruiken de tracks tafel voor de demonstratie.

Stel dat u de tracks wilt classificeren op basis van de lengte, zoals minder een minuut, de track is kort; tussen 1 en 5 minuten is de track medium; langer dan 5 minuten, is de track lang.

Om dit te bereiken, gebruikt u de gezochte CASE uitdrukking als volgt:

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)

Probeer het

In deze tutorial heb je geleerd over SQLite CASE expressie om voorwaardelijke logica in een SQL-query te vormen.


  1. Wat is er nieuw in MariaDB 10.4

  2. Nieuwe Microsoft Access-functies komen eraan!

  3. Weet iemand welke coderingstechniek JDeveloper/SQL Developer gebruikt om inloggegevens te behouden?

  4. MySQL – Fix – Error – Uw wachtwoord voldoet niet aan de huidige beleidsvereisten