Причина использовать ДЕСЯТИЧНОЕ ЧИСЛО (31,0)

Что является причиной, что некоторые люди истории Oracle используют ДЕСЯТИЧНОЕ ЧИСЛО (31,0) для целых чисел. В MySQL это не эффективно.

5
задан Adrian 15 December 2009 в 13:20
поделиться

1 ответ

Oracle реализует тип данных "INTEGER" ANSI как синоним для NUMBER (38)

Подробнее см. " Изучите Oracle: типы данных для SQL и PL / SQL, Numbers "

Однако следующую таблицу следует использовать в качестве сопоставления между типами данных в Oracle и MySQL:

« Дополнительная информация Oracle® Database SQL Developer для миграции MySQL »

Сравнение Oracle и MySQL> Типы данных> Сравнение типов данных

Основное различие, как объяснено здесь и здесь , состоит в том, что тип данных Oracle NUMBER имеет формат переменной длины, тогда как тип данных MySQL DECIMAL (n) раньше был представлены в виде строк, требующих одного байта на цифру или знаковый символ (до версии 5.0.3)

(Oracle NUMBER Datatype) Внутренний числовой формат

База данных Oracle хранит числовые данные в формат переменной длины. Каждое значение хранится в экспоненциальной системе счисления, с 1 байт, используемый для хранения экспоненты и выше до 20 байтов для хранения мантиссы. В итоговое значение ограничено 38 цифры точности. База данных Oracle не хранит начальные и конечные нули. Например, число 412 - это хранится в формате, аналогичном 4,12 x 102, где 1 байт используется для хранения экспонента (2) и 2 байта, используемые для хранения три значащих цифры мантисса (4,1,2). Отрицательные числа включить знак в их длину.

С учетом этого столбец размер в байтах для конкретного числа значение данных NUMBER (p), где p - точность заданного значения, может быть рассчитывается с использованием следующих формула:

ОКРУГЛ ((длина (p) + s) / 2)) + 1

где s равно нулю, если число положительный, и s равно 1, если число отрицательно.

Ноль и положительное и отрицательное бесконечность (создается только при импорте из Oracle Database, версия 5) являются хранятся с использованием уникальных представлений. Нулевая и отрицательная бесконечность каждый требуется 1 байт; положительная бесконечность требуется 2 байта.

и

(MySQL) Изменение типа данных DECIMAL

Требования к хранилищу для целые и дробные части каждого Стоимость определяется отдельно. Каждый кратное девяти цифрам требуется четыре байтов и оставшиеся цифры более требуется некоторая доля четырех байты. [...]

Например, столбец DECIMAL (18,9) имеет девять цифр по обе стороны от десятичная точка, поэтому целая часть и дробная часть требует четырех байты. Столбец DECIMAL (20,6) имеет четырнадцать целых цифр и шесть дробные цифры. Целые цифры требуется четыре байта для девяти из цифры и три байта для оставшиеся пять цифр. Шесть для дробных цифр требуется три байта.

4
ответ дан 15 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: