Articles

Hoe IF…THEN logica te gebruiken in SQL Server

Posted on

SQL Server heeft een unieke mogelijkheid om real-time programmatische logica uit te voeren op de waarden in uw query. Gebaseerd op deze logische evaluaties, kunt u verschillende waarden genereren als onderdeel van de geretourneerde data set.

Gebruik de CASE Statement

Dit is het makkelijkst te bereiken in alle versies van SQL Server met behulp van het CASE statement, dat fungeert als een logische IF...THEN...ELSE expressie en verschillende waarden retourneert afhankelijk van het resultaat.

In het onderstaande voorbeeld willen we een extra locale kolom teruggeven die aangeeft of ons boek zich in Midden-aarde afspeelt of in de gewone oude aarde.

SELECT CASE WHEN books.title = 'The Hobbit' THEN 'Middle-earth' WHEN books.primary_author = 'Tolkien' THEN 'Middle-earth' ELSE 'Earth' END AS locale, books.*FROM books

Voordat we het speciale CASE aspect van deze verklaring gaan onderzoeken, laten we tijdelijk de CASE verwijderen om op te merken dat dit aan de oppervlakte een uiterst eenvoudige SELECT verklaring is:

SELECT books.*FROM books

Laten we daarom eens onderzoeken hoe de CASE-sectie is opgebouwd en welk logisch gedrag we uitvoeren.

CASE WHEN books.title = 'The Hobbit' THEN 'Middle-earth' WHEN books.primary_author = 'Tolkien' THEN 'Middle-earth' ELSE 'Earth'END AS locale

Om te beginnen initialiseren we het CASE -statement en geven we vervolgens aan onder welke voorwaarden (WHEN) ons CASE -statement een resultaat moet evalueren. In dit voorbeeld onderzoeken we de books.title en books.primary_author; als een van beide in ons Tolkien-esque thema past, THEN geven we de waarde ‘Midden-aarde’ terug. Als geen van beide velden overeenkomt met onze zoekopdracht, retourneren we in plaats daarvan de waarde ‘Aarde.’

Om de logica te herschikken als een psuedo-code IF...THEN...ELSE statement, vragen we SQL gewoon om te evalueren:

IF title == 'The Hobbit' OR primary_author == 'Tolkien'THEN RETURN 'Middle-earth'ELSE RETURN 'Earth'END

Ten slotte is het belangrijk te onthouden dat een CASE-instructie altijd aan het einde moet worden aangevuld met een bijpassende END-instructie. In het bovenstaande voorbeeld hernoemen we ook de resulterende waarde die wordt geretourneerd naar locale, hoewel dat zeker optioneel is.

De IIF-functie gebruiken

Als u een modernere versie van SQL gebruikt, is het handig om te weten dat SQL Server 2012 de zeer handige IIF-functie heeft geïntroduceerd. IIF is een verkorte methode voor het uitvoeren van een IF...ELSECASE statement en het retourneren van een van de twee waarden, afhankelijk van de evaluatie van het resultaat.

Herstructureren van ons bovenstaande voorbeeld om IIF te gebruiken is vrij eenvoudig.

SELECT IIF( books.title = 'The Hobbit' OR books.primary_author = 'Tolkien', 'Middle-earth', 'Earth') AS locale, books.*FROM books

Met een IIF-functie vervangen we een groot deel van de syntactische suiker uit het CASE statement door een paar eenvoudige komma-seperatoren om onze argumenten te onderscheiden.

Al met al, zowel CASE en IIF doen hetzelfde werk, maar als je de keus krijgt, is IIF over het algemeen veel eenvoudiger in gebruik.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *