Справка по SQL | страница 20



. Если ни одно из условий WHEN не выполнилось, то будет использовано значение, указанное в предложении ELSE. При отсутствии ELSE, будет возвращено NULL-значение. Если удовлетворены несколько условий, то будет возвращено значение предложения THEN первого из них.

В приведенном выше примере была использована вторая форма оператора CASE.

Заметим, что для проверки на NULL стандарт предлагает более короткую форму оператора - COALESCE. Этот оператор имеет произвольное число параметров и возвращает значение первого, отличного от NULL. Для двух параметров оператор COALESCE(A, B) эквивалентен следующему оператору CASE:

CASE WHEN A IS NOT NULL THEN A ELSE B END

Решение рассмотренного выше примера при использовании оператора COALESCE можно переписать следующим образом:


>SELECT DISTINCT product.model,

> COALESCE(CAST(price as CHAR(20)),'Нет в наличии') price

> FROM product LEFT JOIN pc c ON product.model=c.model

> WHERE product.type='pc';


Использование первой синтаксической формы оператора CASE можно продемонстрировать на следующем примере: Вывести все имеющиеся модели ПК с указанием цены. Отметить самые дорогие и самые дешевые модели.


>SELECT DISTINCT model, price,

> CASE price WHEN (SELECT MAX(price) FROM pc) THEN 'Самый дорогой'

> WHEN (SELECT MIN(price) FROM pc) THEN 'Самый дешевый'

> ELSE 'Средняя цена' END comment

> FROM pc ORDER BY price;




В результате выполнения запроса получим

model

price

comment

1232

350

Самый дешевый

1260

350

Самый дешевый

1232

400

Средняя цена

1233

400

Средняя цена

1233

600

Средняя цена

1121

850

Средняя цена

1233

950

Средняя цена

1233

980

Самый дорогой


Функции Transact-SQL для обработки даты/времени



Стандарт SQL-92 специфицирует только функции, возвращающие системную дату/время. Например, функция CURRENT_TIMESTAMP возвращает сразу и дату, и время. Плюс имеются функции возвращающие что-либо одно.

Естественно, в силу такой ограниченности, реализации языка расширяют стандарт за счет добавления функций, облегчающий работу пользователей с данными этого типа. Здесь мы рассмотрим функции обработки даты/времени в T-SQL.

Функция DATEADD


Синтаксис

DATEADD ( datepart , number, date )

Эта функция возвращает значение типа datetime, которое получается добавлением к дате date количества интервалов типа datepart, равного number. Например, мы можем к заданной дате добавить любое число лет, дней, часов, минут и т.д. Допустимые значения аргумента datepart приведены ниже и взяты из BOL.

Datepart

Допустимые сокращения

Year - год