sql >> Database >  >> RDS >> Sqlserver

Hoe voer ik een IF...THEN uit in een SQL SELECT?

De CASE statement komt het dichtst bij IF in SQL en wordt ondersteund op alle versies van SQL Server.

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

U hoeft alleen de CAST . te gebruiken operator als u het resultaat als een Booleaanse waarde wilt. Als je tevreden bent met een int , dit werkt:

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

CASE statements kunnen worden ingesloten in andere CASE verklaringen en zelfs opgenomen in aggregaten.

SQL Server Denali (SQL Server 2012) voegt de IIF-instructie toe die ook beschikbaar is in access (aangeduid door Martin Smith):

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


  1. Alleen-lezen- en lees-schrijftransacties splitsen met JPA en Hibernate

  2. MySQL-variabelenformaat voor een NOT IN-lijst met waarden

  3. UPPER() – Converteren naar hoofdletters in PostgreSQL

  4. SQL:werk een rij bij en retourneer een kolomwaarde met 1 query