I denne blog vil vi diskutere CASE- sætningen, som du kan bruge til at håndtere flere logiske operationer. Vi vil også diskutere ISNULL SQL-funktionen, der giver dig mulighed for at returnere en erstatningsværdi, hvis der er udtryk, der har NULL- værdi.
CASE - sætningen og ISNULL- funktionen er meget nyttige til at arbejde med koder, der kræver mange logiske operationer, og til hurtig udskiftning af enten faste eller specificerede værdier til et udtryk.
CASE - sætningen i SQL er som at bruge IF ELSE- sætningen. Det ligner dog højst sandsynligt SWITCH- sætningen, som vi bruger i DAX . På den anden side er ISNULL- funktionen til at erstatte en NULL- værdi med en bestemt værdi, som du vil bruge.
Indholdsfortegnelse
Brug af CASE-sætningen i SQL
Lad os antage, at vi har kolonnerne Produktnavn og Salgsbeløb .

Så vil vi oprette en ekstra kolonne med navnet Beskrivelse .
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
Vi ønsker også at tilføje logiske udsagn, der viser ' Billigt ', hvis salgsbeløbet er mindre end eller lig med 5 , og derefter ' Ikke så billigt ' for mellem 6 og 100 . Hvis værdien er større end hundrede, vil den vise ' Dyrt '.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
I dette eksempel brugte vi SELECT- sætningen til at vælge den kolonne, vi vil se. Derefter har vi CASE -sætningen, der indeholder de logiske operationer, vi nævnte tidligere.
Ved brug af CASE- sætningen bruges WHEN- og THEN -sætningerne altid til at angive de logiske operationer, som vi ønsker at implementere i den valgte kolonne. ELSE - sætningen er til at indstille en standardværdi, hvis de logiske operationer ikke blev opfyldt.
I slutningen af CASE- sætningen har vi END AS og kolonnenavnet ved siden af. Dette vil oprette en ny kolonne med navnet Beskrivelse med værdier baseret på de logiske operationer, som vi har tilføjet i CASE -sætningen.
Brug af ISNULL SQL-funktionen
ISNULL - funktionen er til at kontrollere, om der er nogen NULL- værdier i en valgt kolonne og erstatte dem med en hvilken som helst specificeret værdi. Lad os nu visualisere, at vi har følgende kolonner med NULL -værdier.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
I eksemplet ovenfor er alle NULL- værdier erstattet med ' Ukendte '-værdier. Følgende kodelinjer bruges til at oprette dette eksempel.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
Når du bruger ISNULL SQL-funktionen, bør du starte med at vælge kolonnen MiddleName ved hjælp af SELECT- sætningen.
Derefter skal du bruge ISNULL- funktionen til at kontrollere kolonnen MiddleName , der er angivet i parentesen, og erstatte enhver NULL- værdi i den med værdien ' Ukendt '.
AS - funktionen er til at oprette en ny kolonne, som i dette tilfælde er MiddleName_New .
Bemærk, at ISNULL- funktionen kun erstatter NULL- værdier, hvis en bestemt værdi ikke er lig med NULL . Derefter returnerer den samme værdi fra kolonnen, som du har angivet i ISNULL -funktionen.
Dernæst vil jeg bruge CASE- sætningen og ISNULL- funktionerne i SSMS , så du kan se, hvordan det rent faktisk fungerer.
CASE-erklæring i SSMS
Lad os starte med at vælge kolonnen Fornavn fra Person.Person . Bemærk, at det i dette eksempel ikke er nødvendigt at vælge en kolonne. Dette er kun til din reference.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
Efter at have bragt denne kolonne frem, lad os oprette en kolonne, der viser værdier, uanset om fornavnet er Kim eller ej, ved at bruge CASE -sætningen. For at gøre det skal du blot følge eksemplet nedenfor.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
I eksempelkoden ovenfor tilføjede vi en betingelse ved hjælp af CASE- sætningen, hvor hvis fornavnet er lig med ' Kim ', vil det vise ' Ja ', og hvis ikke, så vil det vise ' Nej ' i stedet.
Til dette eksempel oprettede jeg også en ny kolonne med navnet ' IsKim ' ved hjælp af funktionen AFSLUT AS . Se eksemplet nedenfor for resultatet.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
Lad os nu have et andet eksempel ved at bruge CASE- sætningen ved at anvende nogle betingelser på TaxAmt- kolonnen fra Sales.SalesOrderHeader -tabellen.
Lad os først bringe de 100 bedste kolonner fra Sales.SalesOrderHeader ved hjælp af følgende kodelinje og se efter TaxAmt- kolonnen.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
Lad os derefter begynde at anvende betingelser for TaxAmt- kolonnen med CASE- erklæringen ved at bruge eksemplet nedenfor.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
I lighed med det foregående eksempel startede vi med at vælge den kolonne, som vi vil anvende vores betingelser på – i dette tilfælde er det TaxAmt- kolonnen.
Derefter tilføjede vi i CASE- sætningen betingelser, hvor hvis TaxAmt er mindre end eller lig med 500, så vil den vise værdien ' Perfekt '. Hvis TaxAmt er mindre end eller lig med 2000 , vil værdien ' Okay ' blive vist.
Hvis betingelserne ikke var opfyldt, vil værdien ' Ikke god ' blive vist. I slutningen af erklæringen oprettede jeg en ny kolonne ved navn TaxClass .
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
Det er sådan, vi bruger CASE- sætningen i SQL . Vær opmærksom på, at du kan indstille så mange betingelser, som du vil. Bare sørg for at bruge WHEN- og THEN -sætningerne samt END AS- funktionen til at generere en ny kolonne, hvor resultaterne vil blive vist.
ISNULL SQL-funktion i SSMS
I dette eksempel vil jeg bruge den samme tabel fra det forrige eksempel. Så vil jeg demonstrere, hvordan du kan bruge denne funktion til at erstatte NULL- værdier under CurrencyRateID- kolonnen.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
Efter at have valgt tabellen fra eksemplet ovenfor, kan vi se NULL -værdierne under kolonnen CurrencyRateID . Nu vil jeg erstatte disse NULL- værdier med ' 1 '. For at gøre dette henvises til eksemplet nedenfor.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
For at ændre NULL- værdierne i en specifik kolonne, skal vi først vælge den kolonne, der har NULL-værdierne. I dette tilfælde er det CurrencyRateID . Så bruger vi ISNULL -funktionen og vælger den kolonne, der vil blive kontrolleret af ISNULL -funktionen, som er CurrencyRateID .
Vi skal også angive den erstatningsværdi, som vi vil bruge – i dette eksempel brugte jeg ' 1 '. Til sidst tilføjer vi AS- funktionen for at oprette en ny kolonne med navnet NewRate .
Som et resultat blev alle NULL- værdierne erstattet af ' 1 ' under NewRate- kolonnen, og de, der ikke havde en NULL- værdi, forblev de samme. Derudover kan du også ændre en NULL- værdi med en kolonne. Du kan gøre dette ved at følge eksemplet nedenfor.
![ISNULL SQL-funktion i sagsudsagn ISNULL SQL-funktion i sagsudsagn]()
Ved at bruge den samme syntaks fra det forrige eksempel, tilføjede vi netop SalesOrderID ud for CurrencyRateID som vores reference før ISNULL -funktionen. Så ændrede vi erstatningsværdien med SalesOrderID . Denne erklæring vil blot kontrollere NULL- værdierne under CurrencyRateID og erstatte dem med værdierne fra kolonnen SalesOrderID .
Konklusion
Sammenfattende har du lært, hvordan du bruger CASE- sætningen og ISNULL- funktionen sammen med den korrekte syntaks i SQL . Du lærte også, at du kan inkludere så mange logiske betingelser i en CASE- sætning, som du vil. Bare vær opmærksom på, at CASE- sætningen ligner SWITCH eller IF ELSE -sætningen.
Ud over ISNULL- funktionen lærte du, at der er forskellige måder at erstatte en NULL- værdi på ved at bruge denne funktion, hvilket er ved at bruge en fast værdi eller en kolonne.
Alt det bedste,
Hafiz