sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan udfører jeg en IF...THEN i en SQL SELECT?

CASE sætningen er tættest på IF i SQL og understøttes på alle versioner af SQL Server.

SELECT CAST(
             CASE
                  WHEN Obsolete = 'N' or InStock = 'Y'
                     THEN 1
                  ELSE 0
             END AS bit) as Saleable, *
FROM Product

Du behøver kun at bruge CAST operator, hvis du vil have resultatet som en boolsk værdi. Hvis du er tilfreds med en int , dette virker:

SELECT CASE
            WHEN Obsolete = 'N' or InStock = 'Y'
               THEN 1
               ELSE 0
       END as Saleable, *
FROM Product

CASE sætninger kan indlejres i andre CASE udsagn og endda inkluderet i aggregater.

SQL Server Denali (SQL Server 2012) tilføjer IIF-sætningen, som også er tilgængelig i adgang (påpeget af Martin Smith):

SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product


  1. Hvad er den bedste måde at afkorte en dato i SQL Server?

  2. Hvordan retter jeg fejlen 'Named Pipes Provider, fejl 40 - Kunne ikke åbne en forbindelse til' SQL Server'?

  3. Sådan konfigureres MariaDB (Master-Slave) replikering i CentOS/RHEL 7 og Debian 8/9

  4. oracle PL/SQL hvordan man beregner range ip for IPv6 cidr