SQLite
 sql >> база данни >  >> RDS >> SQLite

СЛУЧАЙ SQLite

Резюме: в този урок ще научите за SQLite CASE израз за добавяне на условната логика към заявка.

SQLite CASE Expression оценява списък с условия и връща израз въз основа на резултата от оценката.

CASE изразът е подобен на IF-THEN-ELSE изявление на други езици за програмиране.

Можете да използвате CASE израз във всяка клауза или израз, който приема валиден израз. Например, можете да използвате CASE израз в клаузи като WHERE , ORDER BY , HAVING , SELECT и изрази като SELECT , UPDATE и DELETE .

SQLite предоставя две форми на CASE израз:прост CASE и потърси CASE .

SQLite прост CASE израз

Простият CASE Expression сравнява израз със списък с изрази, за да върне резултата. Следното илюстрира синтаксиса на простия CASE израз.

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)

Простият CASE израз сравнява case_expression към израза се появява в първия WHEN клауза, when_expression_1 , за равенство.

Ако case_expression равно на when_expression_1 , простият CASE връща израза в съответния THEN клауза, която е result_1 .

В противен случай обикновеният CASE израз сравнява case_expression с израза в следващия WHEN клауза.

В случай, че няма case_expression съвпада с when_expression , CASE изразът връща result_else в ELSE клауза. Ако пропуснете ELSE клауза, CASE изразът връща NULL.

Простият CASE изразът използва оценка на късо съединение. С други думи, той връща резултата и спира да оценява други условия веднага щом намери съвпадение.

Прост CASE пример

Нека да разгледаме customers таблица в примерната база данни.

Да предположим, че трябва да направите отчет за групите клиенти с логиката, че ако клиент се намира в САЩ, този клиент принадлежи към местната група, в противен случай клиентът принадлежи към чуждата група.

За да направите този отчет, използвате простия CASE израз в SELECT изявление, както следва:

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)

Опитайте го

SQLite търси CASE израз

Търсеният CASE Expression оценява списък с изрази, за да реши резултата. Имайте предвид, че простият CASE изразът се сравнява само за равенство, докато търсеният CASE изразът може да използва всякакви форми на сравнение.

Следното илюстрира синтаксиса на търсения CASE израз.

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)

Търсеният CASE Expression оценява булевите изрази в посочената последователност и връща съответния резултат, ако изразът се оценява на true.

В случай, че нито един израз не отговаря на истината, търсеният CASE Expression връща израза в ELSE клауза, ако е посочена. Ако пропуснете ELSE клауза, търсеният CASE изразът връща NULL .

Подобно на простия CASE израз, търсеният CASE израз спира оценката, когато е изпълнено условие.

Търсене CASE пример

Ще използваме tracks маса за демонстрация.

Да предположим, че искате да класифицирате песните въз основа на тяхната дължина, като например по-малко от минута, пистата е кратка; между 1 и 5 минути, пистата е средна; повече от 5 минути, песента е дълга.

За да постигнете това, използвате търсения CASE израз, както следва:

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)

Опитайте го

В този урок научихте за SQLite CASE израз за формиране на условна логика в 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. Android Room – Как да нулирате автоматично генерирания първичен ключ на таблицата при всяко стартиране на приложение

  2. Как да инсталирате SQLite на macOS

  3. Как да зададете произволно текст на бутони от SQLite без повторение?

  4. UnsatisfiedLinkError в собствения метод

  5. Получаване на NoClassDefFoundError, докато се опитвате да използвате Proguard и SQLcipher в Android