W Cat - Справка по SQL

Тут можно читать онлайн W Cat - Справка по SQL - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-db. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Справка по SQL
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.63/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

W Cat - Справка по SQL краткое содержание

Справка по SQL - описание и краткое содержание, автор W Cat, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Справка по SQL - читать онлайн бесплатно полную версию (весь текст целиком)

Справка по SQL - читать книгу онлайн бесплатно, автор W Cat
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

В результате получим то, что нужно - 1926.24. Однако это решение выглядит очень громоздко. Заставим неявное преобразование типа поработать на нас:

SELECT CAST(AVG(launched*1.0) AS NUMERIC(6,2)) FROM ships;

Т.е. мы использовали неявное преобразование целочисленного аргумента к точному числовому типу (EXACT NUMERIC), умножив его на вещественную единицу, после чего применили явное приведения типа результата агрегатной функции.

Аналогичные преобразования типа можно выполнить с помощью функции CONVERT:

SELECT CONVERT(NUMERIC(6,2),AVG(launched*1.0)) FROM ships;

Функция CONVERTимеет следующий синтаксис:

CONVERT ([()], [, ])

Основное отличие функции CONVERTот функции CASTсостоит в том, что первая позволяет форматировать данные (например, темпоральные данные типа datetime) при преобразовании их к символьному типу и указывать формат при обратном преобразовании. Разные целочисленные значения необязательного аргумента стиль соответствуют определенным форматам. Рассмотрим следующий пример

SELECT CONVERT(char(25),CONVERT(datetime,'20030722'));

Здесь мы преобразуем строковое представление даты к типу datetime, после чего выполняем обратное преобразование, чтобы продемонстрировать результат форматирования. Поскольку значение аргумента стиль не задано, используется значение по умолчанию (0 или 100). В результате получим

Jul 22 2003 12:00AM

Ниже приведены некоторые другие значения аргумента стиль и результат, полученный на приведенном выше примере. Заметим, что значения стиль большие 100 приводят к четырехзначному отображению года.

стиль

формат

1

07/22/03

11

03/07/22

3

22/07/03

121

2003-07-22 00:00:00.000

Перечень всех возможных значений аргумента стиль можно посмотреть в BOL.

Оператор CASE

Пусть требуется вывести список всех моделей ПК с указанием их цены. При этом если модель отсутствует в продаже (нет в таблице РС), то вместо цены вывести текст: "Нет в наличии".

Список всех моделей ПК с ценами можно получить с помощью запроса:

SELECT DISTINCT product.model, price FROM product LEFT JOIN pc c

ON product.model=c.model

WHERE product.type='pc';

В результирующем наборе отсутствующая цена будет заменена NULL-значением:

model

price

1121

850

1232

350

1232

400

1232

600

1233

600

1233

950

1233

980

1260

350

2111

NULL

2112

NULL

Чтобы заменить NULL-значения нужным текстом, можно воспользоваться оператором CASE:

SELECT DISTINCT product.model,

CASE WHEN price IS NULL THEN 'Нет в наличии' ELSE CAST(price AS CHAR(20)) END price

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

WHERE product.type='pc'

Оператор CASEв зависимости от указанных условий возвращает одно из множества возможных значений. В нашем примере условием является проверка на NULL. Если это условие выполняется, то возвращается текст "Нет в наличии", в противном случае ( ELSE) возвращается значение цены. Здесь есть один принципиальный момент. Поскольку результатом оператора SELECTвсегда является таблица, то все значения любого столбца должны иметь один и тот же тип данных (с учетом неявного приведения типов). Поэтому мы не можем наряду с ценой (числовой тип) выводить символьную константу. Вот почему к полю price применяется преобразование типов, чтобы привести его значения к символьному представлению. В результате получим

model

price

1121

850

1232

350

1232

400

1232

600

1233

600

1233

950

1233

980

1260

350

2111

Нет в наличии

2112

Нет в наличии

Оператор CASEможет быть использован в одной из двух синтаксических форм записи:

1-я форма

CASE

WHEN

THEN

WHEN

THEN

[ELSE ]

END

2-я форма

CASE

WHEN

THEN

WHEN

THEN

[ELSE ]

END

Все предложения WHENдолжны иметь одинаковую синтаксическую форму, т.е. нельзя смешивать первую и вторую формы. При использовании первой синтаксической формы условие WHENудовлетворяется, как только значение проверяемого выражения станет равным значению выражения, указанного в предложении WHEN. При использовании второй синтаксической формы условие WHENудовлетворяется, как только предикат принимает значение TRUE. При удовлетворении условия оператор CASEвозвращает значение, указанное в соответствующем предложении THEN. Если ни одно из условий 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

Средняя цена

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


W Cat читать все книги автора по порядку

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




Справка по SQL отзывы


Отзывы читателей о книге Справка по SQL, автор: W Cat. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x