Общие сведения о типах данных SQL Server
Объявления
В следующих разделах описываются типы данных, поддерживаемые SQL Server.
Типы данных SQL Server
Типы данных, поддерживаемые Microsoft SQL Server, можно разделить на три основные категории: строковые, числовые и типы данных даты/времени.
Строковые типы данных
Строковые типы данных обычно используются для хранения имен, адресов, описаний или любых значений, содержащих буквы и цифры, включая двоичные данные, такие как изображения или аудиофайлы.
Тип данных | Описание |
---|---|
символов ( n ) | Сохраняет строку символов фиксированной длины. Максимальная длина 8000 символов. |
варчар ( n ) | Сохраняет строку символов переменной длины. Максимальная длина 8000 символов. |
varchar (макс.) | Сохраняет строку символов переменной длины. Здесь max указывает, что максимальный размер хранилища составляет 2 ГБ. |
текст | Сохраняет строку символов переменной длины. Максимальный размер хранилища составляет 2 ГБ. |
нчар | Сохраняет строку Unicode фиксированной длины. Максимальная длина 4000 символов. |
нварчар | Сохраняет строку Unicode переменной длины. Максимальная длина 4000 символов. |
nvarchar(макс.) | Сохраняет строку Unicode переменной длины. Здесь max указывает, что максимальный размер хранилища составляет 2 ГБ. |
текст | Сохраняет строку Unicode переменной длины. Максимальный размер хранилища составляет 2 ГБ. |
двоичный ( n ) | Сохраняет двоичные данные фиксированной длины. Максимальный размер хранилища составляет 8000 байт. |
варбинарный ( n ) | Сохраняет двоичные данные переменной длины. Максимальный размер хранилища составляет 8000 байт. |
переменная(макс.) | Сохраняет двоичные данные переменной длины. Здесь макс указывает, что максимальный размер хранилища составляет 2 ГБ. |
изображение | Сохраняет двоичные данные переменной длины. Максимальный размер хранилища составляет 8000 байт. |
Числовые типы данных
Числовые типы данных обычно используются для хранения таких данных, как цена, зарплата и т. д.
Тип данных | Описание |
---|---|
бит | Позволяет сохранить значение 1, 0 или NULL . |
крошечный | Сохраняет целочисленные значения в диапазоне от 0 до 255. |
малое целое | Сохраняет целочисленные значения в диапазоне от -32 768 до 32 767. |
ряд | 9 38 — 1. Подробнее см. ниже.|
числовой ( p , с ) | Числовой тип данных функционально эквивалентен десятичному типу . |
маленькие деньги | Позволяет точно хранить денежные значения в диапазоне от -214 748,3648 до 214 748,3647. |
деньги | Позволяет точно хранить денежные значения в диапазоне от -922 337 203 685 477,5808 до 922 337 203 685 477,5807. |
с плавающей запятой (n) | Сохраняет числовые значения с плавающей запятой. Допустимые значения: от -1,79E+308 до -2,23E-308, 0 и от 2,23E-308 до 1,79E+308. |
реальный | Сохраняет числовые значения с плавающей запятой. Допустимые значения: от -3,40E + 38 до -1,18E — 38, 0 и 1,18E — 38 до 3,40E + 38. |
When declaring a or decimal
or numeric
column, the precision and scale can be specified, like decimal( p , s )
or numeric( p , s )
, где p или точность указывает максимальное общее количество цифр, которые могут быть сохранены как слева, так и справа от десятичной точки. Точность должна быть в диапазоне от 1 до 38. Точность по умолчанию — 18.
Принимая во внимание, что s или шкала указывает максимальное количество цифр, которое может быть сохранено справа от десятичной точки. Это число вычитается из p , чтобы определить максимальное количество цифр слева от десятичной точки. Масштаб должен быть значением от 0 до p. Масштаб по умолчанию 0.
Например, столбец price decimal(6,2)
может хранить любое значение с шестью цифрами и двумя десятичными знаками, т. е. в диапазоне от -9999,99 до 9999,99.
Типы данных даты и времени
Типы данных даты и времени обычно используются для хранения таких данных, как дата рождения, дата приема на работу, дата и время создания или обновления записи в таблице и т. д.
Тип данных | Описание |
---|---|
дата | Сохраняет значение даты в диапазоне от 0001-01-01 (1 января, 1) до 9999-12-31 (31 декабря 9999 г.). |
время | Сохраняет время суток с точностью до 100 наносекунд. Допустимые значения: от 00:00:00,0000000 до 23:59:59,9999999. |
дата-время | Сохраняет комбинированное значение даты и времени с точностью до 3,33 миллисекунды. Допустимый диапазон дат для datetime : с 1753-01-01 (1 января 1753 г.) до 9999-12-31 (31 декабря 9 декабря).999). |
дата/время2 | Тип datetime2 является расширением типа данных datetime с более широким диапазоном дат. Допустимый диапазон дат для datetime2 : с 0001-01-01 (1 января) до 9999-12-31 (31 декабря 9999). |
малая дата и время | Сохраняет комбинированное значение даты и времени с точностью до 1 минуты. Действительный диапазон дат для smalldatetime — с 1 января 1900 года (1 января 1900 года) по |
смещение даты и времени | То же, что и datetime2 с добавлением смещения часового пояса. Формат по умолчанию: ГГГГ-ММ-ДД чч:мм:сс[.нннннн] [{+|-}чч:мм] . Допустимый диапазон смещения часового пояса: от -14:00 до +14:00. |
метка времени | В SQL Server timestamp является синонимом типа данных rowversion , который автоматически генерирует уникальные двоичные числа в базе данных. rowversion обычно используется для строк таблицы с отметкой версии. |
Примечание: Каждый раз, когда строка со столбцом rowversion
вставляется или изменяется внутри таблицы, увеличенное значение rowversion базы данных вставляется в столбец rowversion
. В таблице может быть только один rowversion
столбец.
Предыдущая страница Следущая страница
Числовые типы данных
Informix®
Informix поддерживает несколько типов данных для хранения номера:
Данные Informix тип | Описание |
---|---|
МАЛЕНЬКИЙ | 16-битное целое число со знаком |
ЦЕЛОЕ ЧИСЛО | 32-битное целое число со знаком |
БОЛЬШОЙ | |
INT8 | 64-битное целое число со знаком (заменено на БОЛЬШОЙ ) |
ДЕСЯТИЧНЫЙ | Эквивалент DECIMAL(16) |
ДЕСЯТИЧНЫЙ(p) | Десятичное число с плавающей запятой (максимальная точность 32) |
ДЕСЯТИЧНЫЙ (p,s) | Десятичное число с фиксированной точкой (максимальная точность 32) |
ДЕНЬГИ | Эквивалент DECIMAL(16,2) |
ДЕНЬГИ(р) | Эквивалент DECIMAL(p,2) (максимальная точность
32) |
ДЕНЬГИ(р,с) | Эквивалент DECIMAL(p,s) (максимальная точность
32) |
НАСТОЯЩИЙ / МАЛЫЙПЛАВАЮЩИЙ | 32-разрядное десятичное число с плавающей запятой (C float) |
DOUBLE PRECISION / FLOAT[(n)] | 64-битное десятичное число с плавающей запятой (C double) |
Microsoft™ SQL Server
Microsoft SQL Server поддерживает следующие числовые типы данных:
Microsoft SQL Server тип данных | Описание |
---|---|
МАЛЕНЬКИЙ | 16-битное целое число со знаком |
ЦЕЛОЕ ЧИСЛО | 32-битное целое число со знаком |
БОЛЬШОЙ | 64-битное целое число со знаком |
ДЕСЯТИЧНЫЙ (p,s) | Десятичное число с фиксированной запятой. |
МАЛЕНЬКИЕ | 32-битное десятичное число с плавающей запятой с валютой |
ДЕНЬГИ | 64-битное десятичное число с плавающей запятой с валютой |
НАСТОЯЩИЙ | 32-разрядное десятичное число с плавающей запятой (C float) |
ПОПЛАВКА[(n)] (ДВОЙНОЙ) | 64-битное десятичное число с плавающей запятой (C double) |
Примечания о SQL Server DECIMAL
тип:
- Без какой-либо спецификации десятичного хранения точность по умолчанию равна 18, а масштаб по умолчанию
до нуля:
-
ДЕСЯТИЧНОЕ
в SQL Server =ДЕСЯТИЧНОЕ (18,0)
в Genero BDL. -
DECIMAL(p)
в SQL Server =DECIMAL(p,0)
в Genero BDL.
-
- Максимальная точность 38.
Примечания о типах SQL Server MONEY
и SMALLMONEY
: значения
-
SMALLMONEY
закодированы в 4 байта (например, InformixSMALLFLOAT
) иMONEY
значения закодированы в 8 байтах (как InformixПЛАВАЮЩАЯ
). Это подразумевает другое числовое кодирование и правила округления, как и в случаеDECIMAL(p,s)
типов. - Диапазон значений для SQL Server
SMALLMONEY
составляет от-214 748,3648 до
.214 748,3647
, а диапазон значений SQL ServerMONEY
равен-922 337 203 685 477,5808 от
до922 337 203 685 477,5807
. В результате, например, переменная BDL, определенная какMONEY(19,4)
, которая содержит значение923 000 000 000 000,0000
не может быть сохранен с SQL ServerДЕНЬГИ
. - Типы данных SQL Server
MONEY
иSMALLMONEY
точны до десятитысячной денежной единицы, которую они представляют: Количество десятичных цифр равно 4. Поскольку результат, например, невозможно хранить значения BDLMONEY(15,5)
в SQL ServerДЕНЬГИ
столбцов. - Обработка символов валюты отличается.
По этим причинам не рекомендуется использовать SQL Server 9.0026 ДЕНЬГИ или SMALLMONEY
типов данных для хранения Informix ДЕНЬГИ(p,s)
значений.
Решение
Используйте следующие правила преобразования для сопоставления числовых типов Informix с числовыми типами SQL Server:
Informix | Майкрософт SQL СЕРВЕР |
---|---|
МАЛЕНЬКИЙ | МАЛЕНЬКИЙ |
ЦЕЛОЕ ЧИСЛО | ЦЕЛОЕ / ЦЕЛОЕ |
БОЛЬШОЙ | БОЛЬШОЙ |
INT8 | БОЛЬШОЙ |
ДЕСЯТИЧНЫЙ (p,s) | ДЕСЯТИЧНЫЙ (p,s) |
ДЕСЯТИЧНЫЙ (p<=19) | ДЕСЯТИЧНЫЙ (2*p,p) |
ДЕСЯТИЧНЫЙ (p>19) | н/д |
ДЕСЯТИЧНЫЙ | ДЕСЯТИЧНЫЙ (32,16) |
ДЕНЬГИ(р,с) | ДЕСЯТИЧНЫЙ (p,s) |
ДЕНЬГИ(р) | ДЕСЯТИЧНЫЙ (стр, 2) |
ДЕНЬГИ | ДЕСЯТИЧНЫЙ (16,2) |
РЕАЛЬНЫЙ / МАЛЫЙПЛАВАЮЩИЙ | НАСТОЯЩЕЕ |
FLOAT[(n)] / ДВОЙНАЯ ТОЧНОСТЬ | FLOAT(n) (где n должно быть от 1 до 15) |
При создании таблиц из программ BDL интерфейс базы данных автоматически преобразует числовые типы данных Informix в соответствующие типы данных Microsoft SQL Server. В сценариях создания базы данных примените правила преобразования, как описано в таблице выше.
Важно! Для Informix 9 нет эквивалента SQL Server.0026 DECIMAL(p) десятичное число с плавающей запятой (т.е. без
масштаб). Если ваше приложение использует такие типы данных, вы должны просмотреть схему базы данных, чтобы
для использования типов, совместимых с SQL Server. Чтобы обойти ограничение SQL Server, база данных SQL Server
драйверы преобразуют типы DECIMAL(p)
в DECIMAL(p, p)
для хранения
все возможные номера Informix DECIMAL(p)
можно хранить. Однако исходная точность Informix не может превышать 19, так как SQL Server не может превышать 9.0026 ДЕСЯТИЧНЫЙ точность 38(2*19)
. Если исходная точность больше 19, CREATE
Оператор TABLE
, выполненный из программы Genero, завершится ошибкой SQL Server
2750.
Перевод числовых типов может быть управляется с помощью следующего FGLPROFILE записи:
dbi.