Резюме: в този урок ще научите за 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 ]
END
Code 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 ]
END
Code 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 заявка.