sql >> Databáze >  >> RDS >> SQLite

CASE SQLite

Shrnutí: v tomto tutoriálu se dozvíte o SQLite CASE výraz pro přidání podmíněné logiky do dotazu.

SQLite CASE expression vyhodnotí seznam podmínek a vrátí výraz založený na výsledku vyhodnocení.

CASE výraz je podobný IF-THEN-ELSE v jiných programovacích jazycích.

Můžete použít CASE výraz v jakékoli klauzuli nebo příkazu, který přijímá platný výraz. Můžete například použít CASE výraz v klauzulích, jako je WHERE , ORDER BY , HAVING , SELECT a příkazy jako SELECT , UPDATE a DELETE .

SQLite poskytuje dvě formy CASE výraz:jednoduchý CASE a hledali CASE .

Jednoduché SQLite CASE výraz

Jednoduchý CASE výraz porovná výraz se seznamem výrazů a vrátí výsledek. Následující text ilustruje syntaxi jednoduchého CASE výraz.

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)

Jednoduchý CASE výraz porovnává case_expression k výrazu se objeví v prvním WHEN klauzule when_expression_1 , pro rovnost.

Pokud case_expression rovná se when_expression_1 , jednoduchý CASE vrátí výraz v odpovídajícím THEN klauzule, což je result_1 .

Jinak jednoduchý CASE výraz porovnává case_expression s výrazem v dalším WHEN doložka.

V případě, že žádný case_expression odpovídá when_expression , CASE výraz vrátí result_else v ELSE doložka. Pokud vynecháte ELSE klauzule CASE výraz vrátí hodnotu NULL.

Jednoduchý CASE výraz používá vyhodnocení zkratu. Jinými slovy, vrátí výsledek a přestane vyhodnocovat další podmínky, jakmile najde shodu.

Jednoduchý CASE příklad

Pojďme se podívat na customers tabulky ve vzorové databázi.

Předpokládejme, že musíte vytvořit hlášení skupin zákazníků s logikou, že pokud se zákazník nachází v USA, tento zákazník patří do tuzemské skupiny, v opačném případě zákazník patří do zahraniční skupiny.

K vytvoření tohoto přehledu použijte jednoduchý CASE výraz v SELECT prohlášení takto:

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)

Zkuste to

SQLite prohledal CASE výraz

Hledaný CASE výraz vyhodnocuje seznam výrazů a rozhoduje o výsledku. Všimněte si, že jednoduchý CASE výraz porovnává pouze rovnost, zatímco hledaný CASE výraz může používat jakékoli formy srovnání.

Následující text ilustruje syntaxi hledaného CASE výraz.

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)

Hledaný CASE výraz vyhodnotí booleovské výrazy v zadané sekvenci a vrátí odpovídající výsledek, pokud se výraz vyhodnotí jako true.

V případě, že se žádný výraz nevyhodnotí jako true, hledaný CASE expression vrátí výraz v ELSE doložka, pokud je uvedena. Pokud vynecháte ELSE klauzule, hledaný CASE výraz vrátí NULL .

Podobné jednoduchému CASE výraz, hledaný CASE výraz zastaví vyhodnocení, když je splněna podmínka.

Hledáno CASE příklad

Použijeme tracks stůl pro demonstraci.

Předpokládejme, že chcete klasifikovat skladby na základě jejich délky, například méně než minuta, skladba je krátká; mezi 1 a 5 minutami je stopa střední; delší než 5 minut, skladba je dlouhá.

Chcete-li toho dosáhnout, použijte hledaný CASE výraz takto:

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)

Zkuste to

V tomto tutoriálu jste se dozvěděli o SQLite CASE výraz k vytvoření podmíněné logiky uvnitř dotazu SQL.


  1. Uživatelská oprávnění PostgreSQL

  2. Vytvořte dočasnou tabulku založenou na jiné tabulce na serveru SQL Server

  3. CHYBA 1044 (42000):Přístup odepřen uživateli ''@'localhost' do databáze 'db'

  4. Jak spustit uloženou proceduru z Laravelu