Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да изпълня IF...THEN в SQL SELECT?

CASE изразът е най-близък до IF в SQL и се поддържа във всички версии на SQL Server.

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

Трябва само да използвате CAST оператор, ако искате резултата като булева стойност. Ако сте доволни от int , това работи:

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

CASE изразите могат да бъдат вградени в други CASE изявления и дори включени в агрегати.

SQL Server Denali (SQL Server 2012) добавя израза IIF, който също е наличен в достъп (посочено от Мартин Смит):

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. EF4 - Избраната съхранена процедура не връща колони

  2. Таблицата за проверка на SQL Server е разделена

  3. Как да настроите autocommit в сесия на SQL Server?

  4. Как да изберете подмножество от колони от набора от резултати на съхранена процедура (T-SQL)

  5. Как правилно да вмъкнете нов ред в nvarchar