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