|
Функции SQL Server - Преобразование типов данных
MSSQL Server выполняет неявное преобразование различных типов данных. При этом преобразуемые типы данных определяются в соответствии с правилами приоритета; типы данных с низким приоритетом преобразуются в данные с высоким приоритетом. Приоритеты различных типов данных (по убыванию) перечислены ниже:
• DATETIME; • SMALLDATETIME; • FLOAT; • REAL; • DECIMAL; • MONEY; • SMALLMONEY; • INT; • SMALLINT; • TINYINT; • BIT; • NTEXT; • IMAGE; • TIMESTAMP; • NVARCHAR; • VARCHAR; • CHAR; • VARBINARY; • BINARY; • UNIQUEIDENTIFIER.
При выполнении неявных преобразований типам данных, определяемым пользователем, назначается приоритет базовых типов данных. Если одно из выражений является агрегатной функцией, тип данных выражения определяется типом данных агрегатной функции. Если одно из выражений является столбцом, а другое не является столбцом или агрегатной функцией, тип данных выражения определяется типом данных столбца.
В тех случаях, когда скрытых преобразований оказывается недостаточно, можно выполнять явные преобразования. Для этого существуют две функции, CAST и CONVERT. Функция CAST входит в стандарт ANSI и выполняет преобразования типов данных. Функция CONVERT является расширением T-SQL. Функции имеют следующий синтаксис:
CONVERT (тип_данных [(длина)], выражение [,стиль])
CAST(выражение AS тип_данных)
Функция CONVERT также позволяет выбрать стиль при преобразовании в символьные данные. В результате появляется возможность форматирования данных в SQL. Стили могут использоваться при преобразовании чисел и дат. Стили для различных типов данных и преобразованные значения показаны в следующей таблице:
Стили преобразования даты
|
| Без указания века |
С указанием века
|
Формат преобразованной строки |
| - |
0 или 100 |
mon dd yyyy hh:miAM (или PM) |
| 1 |
101
|
mm/dd/yy |
| 2 |
102 |
yy.mm.dd |
| 3 |
103
|
dd/mm/yy |
| 4 |
104
|
dd.mm.yy |
| 5 |
105
|
dd-mm-yy |
| 6 |
106
|
dd mon yy |
| 7 |
107
|
mon dd,yy |
| 8 |
108
|
hh:mm:ss |
| - |
9 или 109 |
mon dd,yyyy hh:mi:ss:mmmAM (или PM) |
| 10 |
110
|
mm-dd-yy |
| 11 |
111
|
yy/mm/dd |
| 12 |
112
|
Yymmdd |
| 13 |
113
|
dd mon yyyy hh:mi:ss:mmm (24-часовая шкала) |
| 14 |
114
|
hh:mi:ss:mmm (24-часовая шкала) |
| 20 |
120
|
Yyyy-mm-dd hh:mi:ss (24-часовая шкала) |
| 21 |
121
|
yyyy-mm-dd hh:mi:ss:mmm (24-часовая шкала) |
Стили преобразования чисел (вещественных и с плавающей запятой)
|
| Значение |
Описание
|
Пример |
| 0 |
Стандартное преобразование; 6 цифр; экспоненциальная запись там, где это оправдано. |
1.23457e+006 |
| 1 |
Экспоненциальная запись с мантиссой из 8 знаков. |
1.2345671e+006 |
| 2 |
Экспоненциальная запись с мантиссой из 16 знаков. |
1.234567125000000e+006 |
Стили преобразования денежных сумм
|
| Значение |
Описание
|
Пример |
| 0 |
Стандартное преобразование; без запятых; 2 цифры в дробной части. |
123456.12 |
| 1 |
Каждые 3 разряда слева от десятичной точки отделяются запятой; 2 цифры в дробной части.
|
123,234.12 |
| 2 |
Без запятых; 4 цифры в дробной части. |
1234.1234 |
Не все типы данных можно преобразовать друг в друга, даже при использовании явных преобразований.
Допустимые преобразования

|