Что является причиной, что некоторые люди истории Oracle используют ДЕСЯТИЧНОЕ ЧИСЛО (31,0) для целых чисел. В MySQL это не эффективно.
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) имеет четырнадцать целых цифр и шесть дробные цифры. Целые цифры требуется четыре байта для девяти из цифры и три байта для оставшиеся пять цифр. Шесть для дробных цифр требуется три байта.