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

Также как и практически в любом языке в SQL существует явное и неявное приведение типов. Неявное приведение типов работает когда более маленький тип приводят к большему, допустим smallint к int. В таком случае не нужно явно указывать, что необходимо выполнить приведение. Таким образом, чтобы привести тип данных int к строковому нужно указать это явно:

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

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

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

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

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

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

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

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

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

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

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

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

1
CONVERT(datetime,'20120713')

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

  • 0 — не более 6 разрядов
  • 1 — 8 разрядов
  • 2 — 16 разрядов
1
CONVERT(REAL,'2.0120713', 0)

Категория: MySQL | Добавил: ghost_mod (29.09.2016)
Просмотров: 440 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: