SQL WHEN CASE: Išsamus vadovas

Paskutiniai pakeitimai: spalio 20 d. 2025 m.
SQL WHEN CASE

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ų:

  Kas yra statinės duomenų bazės ir kaip jos veikia?

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ų:

  Kam įmonėje naudojamos duomenų bazės?

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

  1. 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.
  2. Ar viename SQL WHEN CASE sakinyje galiu naudoti kelias WHEN sąlygas? Taip, galite naudoti kelias sąlygas WHEN viename SQL WHEN CASE sakinyje. Sujungę kelias sąlygas ir jas atitinkančius rezultatus, galite sukurti sudėtingus sąlyginius vertinimus.
  3. 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ų.
  4. 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.
  5. 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.
  6. 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.
  „PostgreSQL“ sudėtingumo įvaldymas: išsamus architektūros, našumo ir didelio prieinamumo vadovas

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.