SQLite
 sql >> Baza danych >  >> RDS >> SQLite

PRZYPADEK SQLite

Podsumowanie: w tym samouczku dowiesz się o SQLite CASE wyrażenie, aby dodać logikę warunkową do zapytania.

SQLite CASE wyrażenie ocenia listę warunków i zwraca wyrażenie na podstawie wyniku oceny.

CASE wyrażenie jest podobne do IF-THEN-ELSE oświadczenie w innych językach programowania.

Możesz użyć CASE wyrażenie w dowolnej klauzuli lub instrukcji, która akceptuje prawidłowe wyrażenie. Na przykład możesz użyć CASE wyrażenie w klauzulach, takich jak WHERE , ORDER BY , HAVING , SELECT i oświadczenia, takie jak SELECT , UPDATE i DELETE .

SQLite udostępnia dwie formy CASE wyrażenie:proste CASE i przeszukano CASE .

Proste SQLite CASE wyrażenie

Prosty CASE wyrażenie porównuje wyrażenie z listą wyrażeń w celu zwrócenia wyniku. Poniżej przedstawiono składnię prostego CASE wyrażenie.

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)

Prosty CASE wyrażenie porównuje case_expression do wyrażenia pojawia się w pierwszym WHEN klauzula, when_expression_1 , dla równości.

Jeśli case_expression równa się when_expression_1 , prosty CASE zwraca wyrażenie w odpowiednim THEN klauzula, która jest result_1 .

W przeciwnym razie prosty CASE wyrażenie porównuje case_expression z wyrażeniem w następnym WHEN klauzula.

W przypadku braku case_expression pasuje do when_expression , CASE wyrażenie zwraca result_else w ELSE klauzula. Jeśli pominiesz ELSE klauzula CASE wyrażenie zwraca NULL.

Prosty CASE wyrażenie wykorzystuje ocenę zwarcia. Innymi słowy, zwraca wynik i przestaje oceniać inne warunki, gdy tylko znajdzie dopasowanie.

Prosty CASE przykład

Rzućmy okiem na customers tabeli w przykładowej bazie danych.

Załóżmy, że musisz sporządzić raport grup klientów z logiką, że jeśli klient znajduje się w USA, ten klient należy do grupy krajowej, w przeciwnym razie klient należy do grupy zagranicznej.

Aby wykonać ten raport, użyj prostego CASE wyrażenie w SELECT oświadczenie w następujący sposób:

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)

Wypróbuj

SQLite przeszukał CASE wyrażenie

Wyszukiwany CASE wyrażenie ocenia listę wyrażeń, aby zdecydować o wyniku. Zauważ, że prosty CASE wyrażenie porównuje tylko pod kątem równości, podczas gdy wyszukiwany CASE wyrażenie może używać dowolnych form porównania.

Poniżej przedstawiono składnię przeszukiwanego CASE wyrażenie.

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)

Wyszukiwany CASE wyrażenie oblicza wyrażenia logiczne w określonej kolejności i zwraca odpowiedni wynik, jeśli wyrażenie ma wartość prawda.

W przypadku, gdy żadne wyrażenie nie daje wartości true, wyszukiwany CASE wyrażenie zwraca wyrażenie w ELSE klauzula, jeśli została określona. Jeśli pominiesz ELSE klauzula, przeszukiwany CASE wyrażenie zwraca NULL .

Podobne do prostego CASE wyrażenie, wyszukiwany CASE wyrażenie zatrzymuje ocenę, gdy warunek jest spełniony.

Przeszukano CASE przykład

Użyjemy tracks stół do demonstracji.

Załóżmy, że chcesz sklasyfikować utwory na podstawie ich długości, np. mniej minuty, utwór jest krótki; od 1 do 5 minut, tor jest średni; dłuższy niż 5 minut, ścieżka jest długa.

Aby to osiągnąć, użyj wyszukiwanego CASE wyrażenie w następujący sposób:

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)

Wypróbuj

W tym samouczku poznałeś SQLite CASE wyrażenie tworzące logikę warunkową wewnątrz zapytania SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyprowadzanie wyników zapytania SQLite jako instrukcji INSERT

  2. java.lang.IllegalStateException:Nie można odczytać wiersza 0, col -1 z CursorWindow — problem z sqlite dla Androida

  3. Autoinkrementacja klucza SQLite PRIMARY nie działa

  4. Android SQLite nie aktualizuje danych

  5. Jak zrobić synchronizację z lokalną bazą danych i parsować?