Как мне выполнить IF & hellip; THEN в SQL SELECT?

В java8 вам больше не нужно использовать метод Collections.sort, поскольку LinkedList наследует сортировку метода из java.util.List, поэтому адаптируя ответ Fido к Java8:

    LinkedListlist = new LinkedList();
    list.add("abc");
    list.add("Bcd");
    list.add("aAb");

    list.sort( new Comparator(){
    @Override
        public int compare(String o1,String o2){
            return Collator.getInstance().compare(o1,o2);
        }
    });

Ссылки:

http://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html

http: // docs.oracle.com/javase/7/docs/api/java/util/List.html

1398
задан DineshDB 26 March 2018 в 06:09
поделиться

10 ответов

CASE оператор является самым близким к тому, ЕСЛИ в 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 Денали (SQL Server 2012) добавляет оператор IIF, который также доступен в доступ (указанный [1 110] Martin Smith ):

SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product
1645
ответ дан Peter Mortensen 26 March 2018 в 06:09
поделиться

Microsoft SQL Server (T-SQL)

В select, используйте:

select case when Obsolete = 'N' or InStock = 'Y' then 'YES' else 'NO' end

В where пункт, используйте:

where 1 = case when Obsolete = 'N' or InStock = 'Y' then 1 else 0 end
44
ответ дан Peter Mortensen 26 March 2018 в 06:09
поделиться
SELECT  
(CASE 
     WHEN (Obsolete = 'N' OR InStock = 'Y') THEN 'YES'
                                            ELSE 'NO' 
 END) as Salable
, * 
FROM Product
48
ответ дан Zyku 26 March 2018 в 06:09
поделиться

Используйте Оператор выбора:

SELECT CASE
       WHEN (Obsolete = 'N' OR InStock = 'Y')
       THEN 'Y'
       ELSE 'N'
END as Available

etc...
24
ответ дан Krizzy 26 March 2018 в 06:09
поделиться
 SELECT
   CASE 
      WHEN OBSOLETE = 'N' or InStock = 'Y' THEN 'TRUE' 
      ELSE 'FALSE' 
   END AS Salable,
   * 
FROM PRODUCT
45
ответ дан Santiago Cepas 26 March 2018 в 06:09
поделиться

ВАРИАНТ ИСПОЛЬЗОВАНИЯ. Что-то вроде этого.

SELECT Salable =
        CASE Obsolete
        WHEN 'N' THEN 1
        ELSE 0
    END
75
ответ дан palehorse 26 March 2018 в 06:09
поделиться

Оператор выбора является Вашим другом в этой ситуации и принимает одну из двух форм:

простой случай:

SELECT CASE <variable> WHEN <value>      THEN <returnvalue>
                       WHEN <othervalue> THEN <returnthis>
                                         ELSE <returndefaultcase>
       END AS <newcolumnname>
FROM <table>

расширенный случай:

SELECT CASE WHEN <test>      THEN <returnvalue>
            WHEN <othertest> THEN <returnthis>
                             ELSE <returndefaultcase>
       END AS <newcolumnname>
FROM <table>

можно даже поместить операторы выбора в порядок пунктом для действительно необычного упорядочивания.

312
ответ дан Christoph 26 March 2018 в 06:09
поделиться

Можно найти некоторые хорошие примеры в Питание Операторов выбора SQL , и я думаю оператор, который можно использовать, будет что-то вроде этого (от 4guysfromrolla ):

SELECT
    FirstName, LastName,
    Salary, DOB,
    CASE Gender
        WHEN 'M' THEN 'Male'
        WHEN 'F' THEN 'Female'
    END
FROM Employees
86
ответ дан Peter Mortensen 26 March 2018 в 06:09
поделиться

Это будет что-то как этот:

SELECT OrderID, Quantity,
CASE
    WHEN Quantity > 30 THEN "The quantity is greater than 30"
    WHEN Quantity = 30 THEN "The quantity is 30"
    ELSE "The quantity is under 30"
END AS QuantityText
FROM OrderDetails;
1
ответ дан 22 November 2019 в 20:19
поделиться

Из этой ссылки мы можем понять IF THEN ELSE в T-SQL:

IF EXISTS(SELECT *
          FROM   Northwind.dbo.Customers
          WHERE  CustomerId = 'ALFKI')
  PRINT 'Need to update Customer Record ALFKI'
ELSE
  PRINT 'Need to add Customer Record ALFKI'

IF EXISTS(SELECT *
          FROM   Northwind.dbo.Customers
          WHERE  CustomerId = 'LARSE')
  PRINT 'Need to update Customer Record LARSE'
ELSE
  PRINT 'Need to add Customer Record LARSE' 

Разве это не достаточно хорошо для T-SQL?

.
44
ответ дан 22 November 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: