Я не знаю, який найкращий спосіб обов’язково полягає в його зберіганні - але є принаймні кращий варіант, ніж використання varchar(39)
(або varchar(40)
якщо вам це потрібно підписано); замість цього використовуйте decimal(39,0)
. З документів mysql :
Типи з фіксованою точкою (точною вартістю)
Типи DECIMAL і NUMERIC зберігають точні числові значення даних. Ці типи використовуються, коли важливо зберегти точну точність, наприклад, з грошовими даними. У MySQL NUMERIC реалізований як DECIMAL, тому наступні зауваження щодо DECIMAL застосовуються однаково до NUMERIC.
MySQL 5.1 зберігає значення DECIMAL у двійковому форматі. До MySQL 5.0.3 вони зберігалися як рядки. Див. Розділ 11.18, "Точність математики".
У декларації стовпців DECIMAL точність та масштаб можна вказати (і зазвичай є); наприклад:
salary DECIMAL(5,2)
У цьому прикладі 5 - точність, а 2 - шкала. Точність представляє кількість значущих цифр, які зберігаються для значень, а шкала представляє кількість цифр, які можуть бути збережені після десяткової крапки.
Стандартний SQL вимагає, щоб DECIMAL (5,2) міг зберігати будь-яке значення з п'ятьма цифрами та двома десятковими знаками, тому значення, які можна зберігати у стовпчику зарплати, становлять від -999,99 до 999,99.
У стандартному SQL синтаксис DECIMAL (M) еквівалентний DECIMAL (M, 0). Аналогічно, синтаксис DECIMAL еквівалентний DECIMAL (M, 0), де реалізація дозволена визначати значення M. MySQL підтримує обидві ці варіанти варіанту синтаксису DECIMAL. Значення за замовчуванням M - 10.
Якщо шкала дорівнює 0, значення DECIMAL не містять десяткової крапки або дробової частини.
Максимальна кількість цифр для DECIMAL - 65, але фактичний діапазон для даного стовпця DECIMAL може бути обмежений точністю або шкалою для даного стовпця. Коли такому стовпцю присвоюється значення з більшою кількістю цифр після десяткової крапки, ніж дозволено вказаною шкалою, значення перетворюється в цю шкалу. (Точна поведінка залежить від операційної системи, але, як правило, ефектом є усічення до допустимої кількості цифр.)