В 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
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
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
SELECT
(CASE
WHEN (Obsolete = 'N' OR InStock = 'Y') THEN 'YES'
ELSE 'NO'
END) as Salable
, *
FROM Product
Используйте Оператор выбора:
SELECT CASE
WHEN (Obsolete = 'N' OR InStock = 'Y')
THEN 'Y'
ELSE 'N'
END as Available
etc...
SELECT
CASE
WHEN OBSOLETE = 'N' or InStock = 'Y' THEN 'TRUE'
ELSE 'FALSE'
END AS Salable,
*
FROM PRODUCT
ВАРИАНТ ИСПОЛЬЗОВАНИЯ. Что-то вроде этого.
SELECT Salable =
CASE Obsolete
WHEN 'N' THEN 1
ELSE 0
END
Оператор выбора является Вашим другом в этой ситуации и принимает одну из двух форм:
простой случай:
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>
можно даже поместить операторы выбора в порядок пунктом для действительно необычного упорядочивания.
Можно найти некоторые хорошие примеры в Питание Операторов выбора SQL , и я думаю оператор, который можно использовать, будет что-то вроде этого (от 4guysfromrolla ):
SELECT
FirstName, LastName,
Salary, DOB,
CASE Gender
WHEN 'M' THEN 'Male'
WHEN 'F' THEN 'Female'
END
FROM Employees
Это будет что-то как этот:
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;
Из этой ссылки мы можем понять 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?
.