SQL, arba struktūrizuotų užklausų kalba, yra galingas įrankis reliacinėms duomenų bazėms valdyti ir manipuliuoti. Viena vertingiausių SQL savybių yra jos gebėjimas apdoroti sąlyginius teiginius. Sąlyginiai teiginiai leidžia nurodyti skirtingus veiksmus pagal konkrečias sąlygas, suteikdami užklausoms lankstumo ir kontrolės. Tarp įvairių SQL sąlyginių teiginių WHEN CASE teiginys išsiskiria kaip universalus ir efektyvus įrankis . Jis leidžia atlikti sąlyginę logiką užklausoje, todėl yra neįkainojamas jūsų SQL įrankių rinkinio išteklius.
SQL WHEN CASE: pagrindų tyrinėjimas
Norint suprasti visą SQL WHEN CASE sakinio potencialą, svarbu suprasti pagrindinę jo sintaksę ir funkcijas. Teiginys SQL WHEN CASE pirmiausia naudojamas sąlyginiams vertinimams atlikti ir konkretiems rezultatams pateikti pagal įvykdytas sąlygas. Pažvelkime į pagrindinę SQL WHEN CASE sakinio struktūrą:
SELECT columna1,
columna2,
(CASE
WHEN condicion1 THEN resultado1
WHEN condicion2 THEN resultado2
ELSE resultado
END) AS alias
FROM nombre_tabla;
Aukščiau pateiktoje sintaksėje columna1 y columna2 reiškia stulpelius, kuriuos norite gauti iš nurodytos lentelės. Raktažodis CASE pradeda sąlyginį vertinimą, po kurio seka sąlygų serija WHEN ir atitinkamus rezultatus. Išlyga ELSE pateikia numatytąjį rezultatą, jei neįvykdoma nė viena iš sąlygų. Galiausiai raktinis žodis END baigia lygtinį nuosprendį. Vertinimo rezultatas priskiriamas slapyvardžiui, kad būtų lengviau jį peržiūrėti.
Gilinsimės į SQL WHEN CASE
Dabar, kai apžvelgėme pagrindinę SQL WHEN CASE sakinio struktūrą, panagrinėkime įvairius jo aspektus išsamiau. Gilindamiesi į jo taikymą, variantus ir geriausią praktiką, galime panaudoti visą šio galingo sąlyginio teiginio potencialą.
1. SQL WHEN CASE paprastiems sąlyginiams įvertinimams
Paprasčiausias sakinio SQL WHEN CASE naudojimo atvejis yra tiesioginis sąlyginis įvertinimas. Nurodydami sąlygas ir atitinkamus rezultatus, galite veiksmingai kontroliuoti savo užklausų rezultatus. Apsvarstykite šį pavyzdį:
SELECT id_pedido,
fecha_pedido,
(CASE
WHEN monto_total > 1000 THEN 'Pedido de alto valor'
ELSE 'Pedido estándar'
END) AS categoria_pedido
FROM pedidos;
Šiame pavyzdyje gauname stulpelius id_pedido y fecha_pedido nuo stalo pedidos. Sakinys CASE įvertinti stulpelį monto_total, priskirdami reikšmę „Didelės vertės užsakymas“, jei bendra suma viršija 1000 XNUMX, o „Standartinis užsakymas“ kitu atveju. Rezultatas rodomas su slapyvardžiu categoria_pedido.
2. SQL WHEN CASE naudojimas su agregacinėmis funkcijomis
SQL WHEN CASE sakinys taip pat gali būti naudojamas kartu su agregacinėmis funkcijomis sąlyginiams skaičiavimams atlikti. Tai leidžia dinamiškai apskaičiuoti vertes pagal konkrečias sąlygas. Apsvarstykite šį scenarijų:
Turite stalą pavadinimu empleados su stulpeliais id_empleado, nombre, apellido y salario. Norite apskaičiuoti vidutinį darbuotojų atlyginimą, bet neįskaitant atlyginimų, mažesnių už tam tikrą ribą. Štai kaip tai galite pasiekti naudodami SQL WHEN CASE sakinį:
SELECT (CASE
WHEN salario > 50000 THEN salario
ELSE NULL
END) AS salario_filtrado,
AVG(salario) AS salario_promedio
FROM empleados;
Šiame pavyzdyje teiginys CASE įvertinti stulpelį salario, priskiriant darbo užmokesčio vertę, jei ji viršija 50000 XNUMX ir NULL kitaip. Funkcija AVG naudojamas vidutiniam darbo užmokesčiui skaičiuoti, neįskaitant filtruotų atlyginimų. Tai leidžia geriau valdyti apibendrintus skaičiavimus ir filtruoti nepageidaujamus duomenis.
3. Kelių sąlygų tvarkymas naudojant SQL WHEN CASE
Kai kuriais atvejais gali tekti įvertinti kelias sąlygas viename SQL WHEN CASE sakinyje. Laimei, SQL yra paprastas būdas tvarkyti tokius scenarijus. Sujungus kelias sąlygas WHEN ir atitinkamus rezultatus, galite sukurti sudėtingus sąlyginius vertinimus. Apsvarstykite šį pavyzdį:
SELECT nombre_producto,
precio_unitario,
(CASE
WHEN precio_unitario > 50 THEN 'Costoso'
WHEN precio_unitario > 20 THEN 'Moderado'
ELSE 'Accesible'
END) AS categoria_precio
FROM productos;
Šiame pavyzdyje teiginys CASE įvertinti stulpelį precio_unitario ir priskiria atitinkamą kainų kategoriją priklausomai nuo sąlygų įvykdyta. Veiksmingai struktūrizuodami savo sąlygas galite tvarkyti įvairius scenarijus ir atitinkamai suskirstyti duomenis į kategorijas.
4. SQL WHEN CASE operacijose JOIN
SQL WHEN CASE sakinys taip pat gali būti naudojamas JOIN operacijose, leidžiant sąlygiškai sujungti lenteles pagal konkrečius kriterijus. Tai leidžia dinamiškiau ir lanksčiau gauti duomenis. Įsivaizduokite tokį scenarijų:
Jūs turite dvi lentas, clientes y pedidos, su bendru stulpeliu id_cliente. Norite gauti informaciją apie klientą kartu su atitinkamų užsakymų būsena. Štai kaip tai galite pasiekti naudodami SQL WHEN CASE sakinį:
SELECT c.id_cliente,
c.nombre_cliente,
p.estado_pedido
FROM clientes c
JOIN pedidos p ON c.id_cliente = p.id_cliente
WHERE (CASE
WHEN p.estado_pedido = 'Enviado' THEN 1
ELSE 0
END) = 1;
Šiame pavyzdyje teiginys CASE Jis naudojamas viduje sąlyga WHERE filtruoti sąlygiškai lentelės sujungtos. Grąžinamos tik eilutės, kurių užsakymo būsena yra „Išsiųsta“, todėl gausite konkretesnį ir aktualesnį rezultatų rinkinį.
SQL WHEN CASE DUK
- Koks yra sakinio SQL WHEN CASE tikslas? Jis naudojamas sąlyginiams vertinimams atlikti ir pateikti konkrečius rezultatus pagal įvykdytas sąlygas. Suteikia lankstumo ir valdyti savo SQL užklausose, leidžianti efektyviai valdyti įvairius scenarijus.
- Ar viename SQL WHEN CASE sakinyje galiu naudoti kelias WHEN sąlygas? Taip, galite naudoti kelias sąlygas
WHENviename SQL WHEN CASE sakinyje. Sujungę kelias sąlygas ir jas atitinkančius rezultatus, galite sukurti sudėtingus sąlyginius vertinimus. - Ar ELSE sąlyga privaloma SQL WHEN CASE sakinyje? Ne, ELSE sąlyga nėra privaloma sakinyje SQL WHEN CASE. Tačiau rekomenduojama įtraukti ELSE sąlygą, kad būtų pateiktas numatytasis rezultatas, jei neįvykdoma nė viena iš sąlygų.
- Ar galiu naudoti SQL WHEN CASE sakinį su agregacinėmis funkcijomis? Taip, galite naudoti sakinį SQL WHEN CASE su agregavimo funkcijomis sąlyginiams skaičiavimams atlikti. Tai leidžia dinamiškai apskaičiuoti vertes pagal konkrečias sąlygas.
- Ar sakinys SQL WHEN CASE taikomas tik SELECT sakiniuose? Ne, sakinys SQL WHEN CASE gali būti naudojamas įvairiose SQL užklausos dalyse, įskaitant SELECT, WHERE sakinius ir JOIN operacijas. Tai suteikia jums lankstumo sąlygiškai valdyti skirtingus jūsų užklausų aspektus.
- Ar naudojant SQL WHEN CASE sakinį reikia atsižvelgti į našumą? Nors šis teiginys yra galingas įrankis, svarbu atsižvelgti į jo poveikį užklausos našumui. Kaip ir bet kuris sąlyginis teiginys, pertekliniai arba sudėtingi vertinimai gali turėti įtakos užklausos vykdymo laikui. Rekomenduojama išbandyti ir optimizuoti savo užklausas optimaliam veikimui.
Išvada
SQL WHEN CASE sakinys yra esminė priemonė SQL kūrėjo arsenale. Turėdamas galimybę atlikti sąlyginius įvertinimus ir pateikti konkrečius rezultatus, jis leidžia lengvai ir tiksliai valdyti skirtingus scenarijus. Įvaldę sąlyginių sakinių meną SQL kalboje, galite patobulinti savo duomenų bazių valdymo įgūdžius ir atverti naujas duomenų manipuliavimo galimybes.