Добрый день.
Подскажите пожалуйста можно ли как то хранить 20тизначное число в числовом типе? Тип данных int64/uint64? Не могу найти ничего подобного в документации, но возможно я просто не там ищу.
Вопрос только в каком виде.
Обычные целочисленные типы представлены здесь http://postgresql.ru.net/manual/datatype-numeric.html#DATATYPE-INT
как можно увидеть максимум для INTEGER это 922 337 203 685 477 580 7 - это всего 19 разрядов
Однако, можно воспользоваться DECIMAL (NUMERIC) который допускает до 131072 разрядов перед точкой. Разумеется работает он медленнее, но тут либо-либо
Спасибо, пробую использовать данный тип.
CREATE TABLE "public"."test" (
"id" integer,
"uid" numeric(30)
);
при попытке вставить в поле uid значение "111111111122222222223333333333" в базе создается запись такого вида "1,11111111111111E29", при попытке изъять запись с помощью джавы получаю значение "111111111111111000000000000000". Такое значение не соответствует записанному в базу. Как быть? Может я не правильно создал таблицу?
tmp=# select * from test;
id | uid
----+-----(0 rows)
tmp=# INSERT INTO test VALUES(1, 11111111112222222222333333333);INSERT01
tmp=# select * from test;
id | uid
----+-------------------------------
1 |11111111112222222222333333333(1 row)
Такое ощущение что сам пост вопроса помагает его решить)
Спасибо Вам, проблема разрешилась сама собой. Для просмотра базы я использую Navicat и он выводил эту цифру в сокращенном виде. При просмотре через консоль все ок. Буду работать дальше.
Можно
Вопрос только в каком виде.
Обычные целочисленные типы представлены здесь
http://postgresql.ru.net/manual/datatype-numeric.html#DATATYPE-INT
как можно увидеть максимум для INTEGER это 922 337 203 685 477 580 7 - это всего 19 разрядов
Однако, можно воспользоваться DECIMAL (NUMERIC) который допускает до 131072 разрядов перед точкой. Разумеется работает он медленнее, но тут либо-либо
Спасибо, пробую использовать
Спасибо, пробую использовать данный тип.
CREATE TABLE "public"."test" (
"id" integer,
"uid" numeric(30)
);
при попытке вставить в поле uid значение "111111111122222222223333333333" в базе создается запись такого вида "1,11111111111111E29", при попытке изъять запись с помощью джавы получаю значение "111111111111111000000000000000". Такое значение не соответствует записанному в базу. Как быть? Может я не правильно создал таблицу?
Делаю: CREATE TABLE
Делаю:
далее
так что смотрите вашу джаву
Такое ощущение что сам пост
Такое ощущение что сам пост вопроса помагает его решить)
Спасибо Вам, проблема разрешилась сама собой. Для просмотра базы я использую Navicat и он выводил эту цифру в сокращенном виде. При просмотре через консоль все ок. Буду работать дальше.