Функции SQL Server - Преобразование типов данных

MS SQL Server

Функции 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

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

Допустимые преобразования



 

Добавить комментарий


Защитный код
Обновить