sql >> Databasteknik >  >> RDS >> SQLite

SQLite CASE

Sammanfattning: i den här handledningen kommer du att lära dig om SQLite CASE uttryck för att lägga till den villkorliga logiken till en fråga.

SQLite CASE expression utvärderar en lista med villkor och returnerar ett uttryck baserat på resultatet av utvärderingen.

CASE uttrycket liknar IF-THEN-ELSE uttalande på andra programmeringsspråk.

Du kan använda CASE uttryck i någon sats eller påstående som accepterar ett giltigt uttryck. Du kan till exempel använda CASE uttryck i satser som WHERE , ORDER BY , HAVING , SELECT och satser som SELECT , UPDATE och DELETE .

SQLite tillhandahåller två former av CASE uttryck:enkelt CASE och sökte CASE .

SQLite enkelt CASE uttryck

Det enkla CASE expression jämför ett uttryck med en lista med uttryck för att returnera resultatet. Följande illustrerar syntaxen för det enkla CASE uttryck.

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)

Det enkla CASE expression jämför case_expression till uttrycket visas i den första WHEN klausul, when_expression_1 , för jämlikhet.

Om case_expression är lika med when_expression_1 , det enkla CASE returnerar uttrycket i motsvarande THEN sats, som är result_1 .

Annars den enkla CASE expression jämför case_expression med uttrycket i nästa WHEN klausul.

Om inget case_expression matchar when_expression , CASE uttryck returnerar result_else i ELSE klausul. Om du utelämnar ELSE satsen, CASE uttryck returnerar NULL.

Det enkla CASE uttryck använder kortslutningsutvärdering. Med andra ord, den returnerar resultatet och slutar utvärdera andra villkor så snart den hittar en matchning.

Enkelt CASE exempel

Låt oss ta en titt på customers tabell i exempeldatabasen.

Anta att du måste göra en rapport över kundgrupperna med logiken att om en kund befinner sig i USA, så tillhör denna kund den inhemska gruppen, annars tillhör kunden den utländska gruppen.

För att göra denna rapport använder du den enkla CASE uttryck i SELECT uttalande enligt följande:

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)

Prova det

SQLite sökte efter CASE uttryck

Det sökta CASE expression utvärderar en lista med uttryck för att avgöra resultatet. Observera att det enkla CASE uttryck jämför bara för likhet, medan den sökta CASE uttryck kan använda alla former av jämförelse.

Följande illustrerar syntaxen för den sökta CASE uttryck.

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)

Det sökta CASE expression utvärderar de booleska uttrycken i den angivna sekvensen och returnerar motsvarande resultat om uttrycket utvärderas till sant.

Om inget uttryck evalueras till sant, sökte CASE expression returnerar uttrycket i ELSE klausul om specificerad. Om du utelämnar ELSE sats, den sökta CASE uttryck returnerar NULL .

Liknar det enkla CASE expression, den sökta CASE expression stoppar utvärderingen när ett villkor är uppfyllt.

Sökte i CASE exempel

Vi kommer att använda tracks tabell för demonstrationen.

Anta att du vill klassificera spåren baserat på dess längd, till exempel mindre en minut, spåret är kort; mellan 1 och 5 minuter är spåret medium; mer än 5 minuter är spåret långt.

För att uppnå detta använder du den sökta CASE uttryck enligt följande:

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)

Prova det

I den här handledningen har du lärt dig om SQLite CASE uttryck för att bilda villkorlig logik inuti en SQL-fråga.


  1. Säkra din MySQL-installation

  2. Ett par små problem med Hekaton-prover

  3. Vad är databasen, varför databas?

  4. Vilket är mer effektivt:Flera MySQL-bord eller ett stort bord?