Sql

Ms sql numeric: decimal и numeric (Transact-SQL) — SQL Server

Общие сведения о типах данных 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 байт.

Числовые типы данных

Числовые типы данных обычно используются для хранения таких данных, как цена, зарплата и т. д.

9 38 — 1. Подробнее см. ниже.
Тип данных Описание
бит Позволяет сохранить значение 1, 0 или NULL .
крошечный Сохраняет целочисленные значения в диапазоне от 0 до 255.
малое целое Сохраняет целочисленные значения в диапазоне от -32 768 до 32 767.
ряд
числовой ( 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 года) по
06 июня 2079 года (6 июня 2079 года).
смещение даты и времени То же, что и datetime2 с добавлением смещения часового пояса. Формат по умолчанию: ГГГГ-ММ-ДД чч:мм:сс[.нннннн] [{+|-}чч:мм] . Допустимый диапазон смещения часового пояса: от -14:00 до +14:00.
метка времени В SQL Server timestamp является синонимом типа данных rowversion , который автоматически генерирует уникальные двоичные числа в базе данных. rowversion обычно используется для строк таблицы с отметкой версии.

Примечание: Каждый раз, когда строка со столбцом rowversion вставляется или изменяется внутри таблицы, увеличенное значение rowversion базы данных вставляется в столбец

rowversion . В таблице может быть только один rowversion столбец.

Предыдущая страница Следущая страница

Числовые типы данных

Informix®

Informix поддерживает несколько типов данных для хранения номера:

Таблица 1. Типы числовых данных Informix
Данные Informix тип Описание
МАЛЕНЬКИЙ 16-битное целое число со знаком
ЦЕЛОЕ ЧИСЛО 32-битное целое число со знаком
БОЛЬШОЙ
64-битное целое число со знаком
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 поддерживает следующие числовые типы данных:

Таблица 2. Числовые типы данных 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 байта (например, Informix SMALLFLOAT ) и MONEY значения закодированы в 8 байтах (как Informix ПЛАВАЮЩАЯ ). Это подразумевает другое числовое кодирование и правила округления, как и в случае DECIMAL(p,s) типов.
  • Диапазон значений для SQL Server SMALLMONEY составляет от -214 748,3648 до . 214 748,3647 , а диапазон значений SQL Server MONEY равен -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. Поскольку результат, например, невозможно хранить значения BDL MONEY(15,5) в SQL Server ДЕНЬГИ столбцов.
  • Обработка символов валюты отличается.

По этим причинам не рекомендуется использовать SQL Server 9.0026 ДЕНЬГИ или SMALLMONEY типов данных для хранения Informix ДЕНЬГИ(p,s) значений.

Решение

Используйте следующие правила преобразования для сопоставления числовых типов Informix с числовыми типами SQL Server:

Таблица 3. Типы данных Informix и эквиваленты Microsoft 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.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *