Articles

SQL CASE Statement-Simple and Searched Forms

az SQL CASE expression fő célja egy vagy több feltételes teszten alapuló érték. Használjon CASE kifejezéseket bárhol SQL utasítás kifejezés megengedett. Bár valóban kifejezés, néhány ember “ESET-nyilatkozatoknak” nevezi őket.”Ez valószínűleg a programozási nyelvekben való használatukból ered.

az SQL CASE kifejezés rendkívül sokoldalú, és az SQLSERVER lekérdezésekben is használatos. Különösen a SELECT oszlop listában használják, csoportosítva, rendelkezve, rendelve záradékok szerint. A CASE kifejezés szabványosítja (szépít) az adatokat, vagy ellenőrzéseket végez a hibák elleni védelem érdekében, mint például a divide nullával.

az összes példa erre a leckére a Microsoft SQL Server Management Studio és a AdventureWorks2012 adatbázison alapul. Az első lépések az SQL Server használatával az ingyenes útmutató és az ingyenes Microsoft eszközök.

SQL Server CASE Statement

az ÜGYZÁRADÉKNAK két formája van: egyszerű és keresett. Mindkét forma egy kifejezés tesztelésén alapuló eredményt ad vissza. Bár technikailag kifejezések, látni fogja, sokan hivatkoznak rá, mint egy nyilatkozatot.

az egyszerű SQL CASE utasítás az egyenlőségi tesztekhez használható. Egy kifejezést tesztel több érték ellen, ez nagyszerűvé teszi egy értékkészlet, például rövidítések megfelelő hosszú formájukhoz való átalakítását.

a keresett SQL CASE utasítás átfogóbb kifejezésértékelési formátumot használ. Jó, ha olyan adattartományokkal szeretne dolgozni, mint például a Fizetési tartományok vagy az életkor.

először az egyszerű űrlappal kezdjük, majd fedjük le a keresést.

case expression Simple Form

a CASE expression egyszerű formája összehasonlítja egy kifejezés eredményeit egy tesztsorozattal, és visszaad egy “eredményt”, ha a “teszt” true értéket ad vissza.

egy egyszerű FORMAKIFEJEZÉS általános formája:

CASE expression
WHEN test THEN result

ELSE otherResult
END

az ELSE utasítás opcionális egy eset kifejezésben. Az “otherResult” – ot akkor adja vissza, ha nincs mérkőzés, és más is jelen van. Ha nincs más az esettanulmányban, akkor NULL értéket ad vissza.

az ELSE záradék nagyszerű módja a rossz vagy váratlan adatértékek fogásának, valamint a NULL-tól eltérő eredmény visszaadásának.

Data Transformation Example

több oka van annak, hogy egy CASE statement. Az első az adatok egyik értékkészletről a másikra történő átalakítása. Például, hogy megjelenjen a munkavállaló neme, mint a “Férfi” vagy “Nő”, ha az adatokat kódolva, mint “M” vagy “F” használata az ESETBEN a kifejezés, hogy teszteljék az egyetlen karakter képviselet, vissza a megfelelő hosszú forma után.

a példa erre:

SELECT JobTitle,
CASE Gender
WHEN 'M' THEN 'Male'
WHEN 'F' THEN 'Female'
ELSE 'Unknown Value'
END
FROM HumanResources.Employee

adat szabványosítási példa

Hasonlóképpen egy egyszerű CASE záradékot is használhat több érték egységesítéséhez. Kiterjesztve a példa térképek több variáció, hogy akár férfi vagy nő:

lehet, hogy kíváncsi, ha tudna csak hozzon létre egy másik táblázatot az adatbázisban, és használja, hogy keresse meg az értékeket. Hajlandó vagyok egyetérteni azzal, hogy ez lenne a legjobb, de sok esetben nem lesz engedélye táblák létrehozására az adatbázisban. Ebben az esetben ön marad a esze egy kiválasztott nyilatkozatot nyújt.

összefoglaló

Íme néhány dolog, hogy fontolja meg, ha az egyszerű eset kifejezés:

  • lehetővé teszi, hogy csak egyenlőség összehasonlításokat.
  • a tesztek kiértékelése a megadott sorrendben történik.
  • az első igaz tesztnek megfelelő eredményt adja vissza.
  • ha nincs egyezés, a case null értéket ad vissza, kivéve, ha más van jelen.

CASE expression keresett forma

a case expression Keresési formája lehetővé teszi a sokoldalú tesztelést. Használja a tesztek nagyobb tartományának értékeléséhez. Valójában minden logikai kifejezés tesztnek minősül.

a keresett CASE expression van ez a formátum

CASE
WHEN booleanExpression THEN result

ELSE otherResult
END

a keresett formában, amikor záradékok értékelni logikai kifejezések. Az első igazi logikai kifejezés eredménye visszatér.

Az alábbiakban a munkavállaló nemi példájának keresett esete látható az előző szakaszból.

ugyanezt a példát használtuk az egyszerű SQL case utasításhoz is. Azért tettem, hogy láthassa a finom különbséget. Figyeljük meg, hogy minden WHEN záradék most tartalmazza a teszt, mint egy logikai kifejezés.

Összehasonlítása Egyszerű, Átkutattuk Formák SQL ÜGY

Itt vannak a nyilatkozatok side-by-side:

Egyszerű ellen Keresett ESETBEN kifejezés

én hajlanak arra, hogy a keresett ESETBEN kifejezés formátum az SQL. Ez az ok egyszerű, csak egy formátumra kell emlékeznem!

mivel logikai kifejezéseket tesztelünk, a keresett ESET-állítás nem korlátozódik csak az egyenlőségi tesztekre. Ez teszi ezt a formát igazán jó összehasonlítására értéktartományok. Talán az Adventure Works értékesítési vezetője árkategóriánként szeretné megszervezni a termékeket. Hogyan lehet ezt megtenni az SQL – rel?

tekintettel az értékesítési vezető által megadott következő nevekre és tartományokra, össze tudunk állítani egy CASE kifejezést, hogy összehasonlítsuk a listaárat egy értéktartománygal, majd visszaadjuk a megfelelő árkategória nevét.

Itt van az SQL, amely elvégzi a trükköt:

amikor futtatja ezt a lekérdezést látni fogja PriceRange felsorolt és megjelenítő értékek szerint megadott tartományok esetében kifejezés:

CASE Statement Results

CASE statements lehet a hibák megelőzésére is használható. Jó példa az érvényes értékek tesztelése olyan kifejezéseken belül, mint például a számok megosztásakor.

fontolja meg

SELECT ProductID,
Name,
ProductNumber,
StandardCost,
ListPrice,
StandardCost / ListPrice as CostOfGoodSold
FROM Production.Product

Ez a kijelentés visszaadja az üzenetet

Divide by zero error encountered.

egy CASE záradék használatával biztosíthatjuk, hogy véletlenül ne osztjuk nullával.

SELECT ProductID, Name, ProductNumber, StandardCost, ListPrice, CASE WHEN ListPrice = 0 Then NULL ELSE StandardCost / ListPrice END as CostOfGoodSoldFROM Production.Product

CASE kifejezés használható, ahol egy kifejezés használható. Ez azt jelenti, hogy használhatja azt egy oszlopérték-eredmény visszaadására, vagy akár a klauzula szerinti sorrendben is felhasználhatja.

a következő részben áttekintjük a CASE-t a sorrendben, csoportosan a záradékok szerint.

CASE expression in ORDER BY

folytatva az értékesítési menedzser kérését, tegyük fel, hogy a termékeket árkategória szerint, majd Terméknév szerint is szeretné látni. Láttuk, hogyan tudjuk megjeleníteni az árkategóriák, mint egy oszlop,de hogyan rendezzük?

valójában nagyon egyszerű. Mivel az ESET egy kifejezés, akkor tudjuk használni, mint egyszer az értékeket, ahonnan rendelni az eredményeket. Ne feledje, hogy nem korlátozódunk csak a táblázat oszlopainak rendezésére, hanem egy kifejezést is rendezhetünk.

itt van a lekérdezés, amelyet az árkategória szerint kell rendezni.

ezután hozzáadhatunk CASE nyilatkozatot a lista kiválasztásához az árkategória megjelenítéséhez.

amint látja, a dolgok bonyolultabbá válnak. Látja, hogyan ismételjük meg az esettanulmányt mind a SELECT listában, mind a sorrendben? Szerencsére ezt egy kicsit egyszerűsíthetjük, de eltávolíthatjuk az esettanulmányt a rendelésből azáltal, hogy helyettesítjük a SELECT list CASE expression álnévvel PriceRange így:

case expression in GROUP by

most, hogy részletes listát adtunk az értékesítési menedzsernek, összefoglaló adatokat szeretne látni-nem ér véget? Tapasztalatom szerint nem, így sok sql ismerete az ügyfelek igényeinek kielégítésére a siker kulcsa.

egyébként a jó hír az, hogy az általunk épített CASE kifejezést összefoglaló csoportok létrehozására használhatjuk. A következő SQL-ben az adatokat PriceRange szerint csoportosítjuk. Összefoglaló statisztikák a minimális, maximális, átlagos Listárólárakat hoznak létre.

ellentétben a rendelési záradék, nem tudjuk hivatkozni az oszlop alias PriceRange a csoportban. Az egész esetet meg kell ismételni. Itt vannak a lekérdezésünk eredményei:

eredmények – Case Expression in GROUP by

mint látható, CASE kifejezések használata sokoldalúságot ad az SQL utasításoknak. Ezek nem csak lehetővé teszik az adatok átalakítását az egyik értékkészletről a másikra, hanem arra is használhatók, hogy a kijelentések ne térjenek vissza a hibákhoz.

a két forma közül, egyszerű és keresett, inkább a keresési űrlapot használom. Ennek oka az, hogy az egyszerű forma az egyenlőségi tesztekre korlátozódik; mivel a keresett forma ezt meg tudja tenni.

mivel az ESETKIFEJEZÉSEK kifejezések, nem pedig kijelentések vagy záradékok, akkor használhatók, ha bármilyen más kifejezést használnak. Ez azt jelenti, hogy használhatja az egész SELECT utasítás máshol SQL.