SQL Урок 8. Приведение типов

SQL   2 апреля 2012  Автор статьи:  

Также как и практически в любом языке в SQL существует явное и неявное приведение типов. Неявное приведение типов работает когда более маленький тип приводят к большему, допустим smallint к int. В таком случае не нужно явно указывать, что необходимо выполнить приведение. Таким образом, чтобы привести тип данных int к строковому нужно указать это явно:
rs
SELECT 'Средний возраст =' + AVG(Age) FROM Student

Выдаст ошибку, так как нету явного преобразования типов.

SELECT 'Средний возраст =' + CAST(AVG(Age) AS CHAR(3)) FROM Student

Cast имеет следующий синтаксис:

CAST( выражение AS тип_данных)

Следует учитывать, что не любой тип можно преобразовать в другой. Таблица преобразований можно посмотреть для каждой базы данных, но следует понимать, что большинство преобразований с помощью CAST возможны. Не преобразуются более менее специфические типы, такие как image, xml и т.д.
Следует отметить, что агрегатные функции возвращают тот же тип данных, что и столбец к которому она была применена, поэтому для того, чтобы вывести средний возраст с вещественной частью нужно использовать явное приведение типов. Поэтому преобразуем столбец Age к вещественному типу и решим проблему:

SELECT 'Средний возраст =' + CAST(AVG(Age AS NUMERIC(4,2)) AS CHAR(3)) FROM Student

В этом примере можно использовать и неявное преобразование типов:

SELECT 'Средний возраст =' + CAST(AVG(Age * 1.0) AS CHAR(3)) FROM Student

Другая функция для явного приведения типов CONVERT:

CONVERT (тип_данных, выражение [, стиль])

Основное отличие от CAST заключается в возможности использования стилей. Преобразуем год из строки в тип datetime:

CONVERT(datetime,'20120713')

Приведем некоторые значения стилей, например, для float и real существуют следующие стили:

  • 0 — не более 6 разрядов
  • 1 — 8 разрядов
  • 2 — 16 разрядов


CONVERT(real,'2.0120713', 0)

Научиться программировать

  • на Delphi

  • на Java

  • на C++