sql >> Databasteknik >  >> RDS >> Sqlserver

Hur IF-utlåtandet fungerar i SQL Server

De flesta (förmodligen alla ) programmeringsspråk inkluderar någon form av IF uttalande som tillåter programmerare att skriva villkorlig kod. Det vill säga kod som endast körs om ett visst villkor är sant.

Det är ett väldigt enkelt koncept. I princip ser det ut så här:

"Om detta, gör det."

De flesta språk kallar det helt enkelt IF , men vissa har sin egen twist på namnet (till exempel i ColdFusion/CFML heter det CFIF ).

I alla fall gör de i princip samma sak.

I SQL Server (eller mer exakt, dess programmeringsspråk T-SQL) kallas det IF .

Exempel

Här är ett grundläggande exempel för att visa hur IF uttalande fungerar.

IF 1 < 2 SELECT 'True';

Resultat:

True

I det här fallet är uttrycket som ska utvärderas 1 < 2 . Det är sant att 1 är mindre än 2 så SELECT uttalandet kördes och True returnerades.

Men om uttrycket är falskt kommer ingenting att hända.

Följande exempel visar detta:

IF 1 > 2 SELECT 'True';

Resultat:

Commands completed successfully.

Allt SQL Server sa till mig är att kommandot slutfördes framgångsrikt. Inget annat returnerades, eftersom inget annat var specificerat.

OM... ANNAT uttalande

I SQL Server, IF uttalande kommer med en valfri ELSE , som låter dig tillhandahålla ett alternativ, om uttrycket returnerar falskt.

Därför är det som att säga "OM detta, gör det här, ANNAT, gör det här".

I det här fallet kan vi lägga till den valfria ELSE till IF sats, så att den blir en IF... ELSE uttalande.

IF 1 > 2
       SELECT 'True';
ELSE 
       SELECT 'False';

Resultat:

False

Nu får vi också ett resultat när uttrycket är falskt.

Inkapslade IF-utlåtanden

En av de fantastiska sakerna med IF påståenden är att du kan kapsla dem. Det vill säga, du kan lägga till fler IF uttalanden inuti din ursprungliga, och fler inuti dem etc.

Du kan kapsla så många IF uttalanden som du vill. Du är bara begränsad av mängden tillgängligt minne.

Här är ett exempel på att kapsla en IF uttalande i en annan.

DECLARE @bankBalance int = 123;
IF @bankBalance > 100
    IF @bankBalance > 150
        SELECT 'Rich!';
    ELSE
        SELECT 'Wealthy';
ELSE 
    SELECT 'Poor';

Resultat:

Wealthy

OM... ANNAT OM-uttalanden

Du kan också använda den som en IF... ELSE IF påstående.

DECLARE @bankBalance int = 123;
IF @bankBalance > 150
    SELECT 'Rich!';
ELSE IF @bankBalance > 100
    SELECT 'Wealthy';
ELSE
    SELECT 'Poor';

Resultat:

Wealthy

  1. Infoga data i 3 tabeller åt gången med Postgres

  2. Hur man aktiverar/inaktiverar CHECK-begränsningar i SQLite

  3. Att lagra json, jsonb, hstore, xml, enum, ipaddr, etc misslyckas med kolumn x är av typen json men uttrycket är av typen som varierar

  4. Beräkna öppettider mellan två datum