Как мне выполнить IF ... THEN в SQL SELECT? - PullRequest
1373 голосов
/ 15 сентября 2008

Как мне выполнить IF...THEN в операторе SQL SELECT?

Например:

SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * FROM Product

Ответы [ 25 ]

7 голосов
/ 30 ноября 2016
  SELECT IIF(Obsolete = 'N' OR InStock = 'Y',1,0) AS Saleable, * FROM Product
6 голосов
/ 08 января 2014

Для тех, кто использует SQL Server 2012, IIF - это функция, которая была добавлена ​​и работает в качестве альтернативы операторам Case.

SELECT IIF(Obsolete = 'N' OR InStock = 'Y', 1, 0) AS Salable, *
FROM   Product 
3 голосов
/ 28 февраля 2019

У вас может быть два варианта для реализации:

  1. Использование IIF, представленного в SQL Server 2012:

    SELECT IIF ( (Obsolete = 'N' OR InStock = 'Y'), 1, 0) AS Saleable, * FROM Product
    
  2. Использование Select Case:

    SELECT CASE
        WHEN Obsolete = 'N' or InStock = 'Y'
            THEN 1
            ELSE 0
        END as Saleable, *
        FROM Product
    
2 голосов
/ 02 ноября 2018

Вопрос:

SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * FROM Product

ANSI:

Select 
  case when p.Obsolete = 'N' 
  or p.InStock = 'Y' then 1 else 0 end as Saleable, 
  p.* 
FROM 
  Product p;

Использование псевдонимов - p в этом случае - поможет предотвратить проблемы.

1 голос
/ 08 октября 2018
SELECT 
  CAST(
    CASE WHEN Obsolete = 'N' 
    or InStock = 'Y' THEN ELSE 0 END AS bit
  ) as Saleable, * 
FROM 
  Product
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...