sql >> Databasteknik >  >> RDS >> Sqlserver

Hur gör jag en IF...THEN i en SQL SELECT?

CASE satsen är närmast IF i SQL och stöds på alla versioner av 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 bara använda CAST operatorn om du vill ha resultatet som ett booleskt värde. Om du är nöjd med en int , detta fungerar:

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

CASE satser kan bäddas in i andra CASE påståenden och till och med inkluderade i aggregat.

SQL Server Denali (SQL Server 2012) lägger till IIF-satsen som också är tillgänglig i access (påpekad av Martin Smith):

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


  1. Övervakning av Percona XtraDB-kluster - nyckelmått

  2. Hur man tar bort ledande blanksteg i MySQL

  3. Hur man inaktiverar alla CHECK &främmande nyckelbegränsningar i en databas i SQL Server (T-SQL-exempel)

  4. Hur delar jag en sträng så att jag kan komma åt objekt x?