Гость
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / INT8 не такой уж и большой, как говорят / 17 сообщений из 17, страница 1 из 1
09.11.2010, 16:47
    #36945409
Hijack_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Добрый день! Мой вопрос для большинства точно будет ламерским, так что не пугайтесь :).
Создал табличку с некоторыми полями типа INT8, в которых необходимо хранить числа длиной до 16 цифр включительно, без дробной части (ее у меня не бывает). Полазив по интернету и заглянув на официальный сайт IBM нашел, что тип INT8 может хранить числа размерностью:
–9,223,372,036,854,775,807 to 9,223,372,036,854,775,807. Так вот вопрос: не хранит он такие размеры. точные замеры я не делал, но 13 символов уже не хранит. 10 - хранит.. Что значит "не хранит": при insert или update при попытке записи большого числа в поля записываются NULL. Помогите кто чем сможет.
...
Рейтинг: 0 / 0
09.11.2010, 16:59
    #36945445
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Hijack_,
каким образом вставляли или модифицировали данные ? Возможно, это ограничение инструментария или API.
Кстати, "10 цифр которые все таки хранятся" напоминают обычный 4-байтовый int с максимумом в 2 миллиарда.
...
Рейтинг: 0 / 0
09.11.2010, 17:14
    #36945477
Hijack_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
vasilisHijack_,
каким образом вставляли или модифицировали данные ? Возможно, это ограничение инструментария или API.
Кстати, "10 цифр которые все таки хранятся" напоминают обычный 4-байтовый int с максимумом в 2 миллиарда.

Использовал 2 способа:
1) C++ DbXpress
2) Server Studio for Informix

Интересно то, что то же самое на oracle и informix работает. Та же таблица, те же поля. Вот мне кажется, что что-то может быть не так с этим типом INT8. Может мой Informix сервер интерпретирует его как-то по своему его.
...
Рейтинг: 0 / 0
09.11.2010, 17:46
    #36945566
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$ dbaccess test -

Database selected.
> create table inttest(a int8);
Table created.

> insert into inttest values (9223372036854775807);
1 row(s) inserted.

> select * from inttest;
                   a 
 9223372036854775807
1 row(s) retrieved.

$ onstat -
IBM Informix Dynamic Server Version 11.10.UC2     -- On-Line -- Up 83 days 06:53:22 -- 47188 Kbytes
...
Рейтинг: 0 / 0
09.11.2010, 17:51
    #36945577
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
попробуйте еще через строки:

> insert into inttest values ('9223372036854775807');
1 row(s) inserted.

> select a||'' from inttest;
(expression)
9223372036854775807
9223372036854775807
2 row(s) retrieved.
...
Рейтинг: 0 / 0
09.11.2010, 17:56
    #36945591
Hijack_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Хорошо, когда у других работает. Но мне сегодня не так везет, как остальным. Сделал аналогичный тест (copy + paste). Select вернул пустое поле.. Затем вставил в таблицу 123456789 и select вернул то, что я вставлял. Есть мысли? Может есть аналогичный большой тип (Только без плавающих точек) ?
...
Рейтинг: 0 / 0
09.11.2010, 17:57
    #36945595
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Hijack_Хорошо, когда у других работает. Но мне сегодня не так везет, как остальным. Сделал аналогичный тест (copy + paste). Select вернул пустое поле.. Затем вставил в таблицу 123456789 и select вернул то, что я вставлял. Есть мысли? Может есть аналогичный большой тип (Только без плавающих точек) ?
покажите

insert into inttest values ('9223372036854775807');

select a||'' from inttest;
select a from inttest;
...
Рейтинг: 0 / 0
09.11.2010, 17:58
    #36945597
Hijack_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Журавлев Дениспопробуйте еще через строки:

> insert into inttest values ('9223372036854775807');
.

Тоже в итоге NULL :(
...
Рейтинг: 0 / 0
09.11.2010, 17:59
    #36945603
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Hijack_Журавлев Дениспопробуйте еще через строки:

> insert into inttest values ('9223372036854775807');
.

Тоже в итоге NULL :(

и с конкатенацией с пустой строкой?
select a ||' ' from inttest;
...
Рейтинг: 0 / 0
09.11.2010, 18:10
    #36945630
Hijack_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Журавлев Денис
покажите
insert into inttest values ('9223372036854775807');
select a||'' from inttest;
select a from inttest;

-- Executing SQL
insert into inttest values ('9223372036854775807')
-- SQL executed.
-- 1 rows affected.

--Executing SQL
select a||'' from inttest
-- Select executed. 1 rows selected. Result shown in Output1 tabbed page.
Тут есть мое число. что значит этот загадочный sql запрос?


--Executing SQL
select a from inttest
-- Select executed. 1 rows selected. Result shown in Output2 tabbed page.
Тут пусто.
...
Рейтинг: 0 / 0
09.11.2010, 18:10
    #36945632
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
работайте с фиксированной точкой decimal, он просто больше байт будет занимать:

> create table dectest(a decimal(30,0));
Table created.

> insert into dectest values (9223372036854775807);
1 row(s) inserted.

> select a||'' from dectest;
(expression)
9223372036854775807
1 row(s) retrieved.
...
Рейтинг: 0 / 0
09.11.2010, 18:12
    #36945634
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Hijack_
Тут есть мое число. что значит этот загадочный sql запрос?
это конвертация в строку на стороне информикса.
проблема в ваших инструментах, а не в информиксе.

обращайтесь к разработчикам :
1) C++ DbXpress
2) Server Studio for Informix
...
Рейтинг: 0 / 0
09.11.2010, 18:20
    #36945651
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
вы кстати не пробовали

Luxena отдала проекты в open-source:

http://www.deltics.co.nz/blog/?p=624

dbExpress drivers for Informix
dbExpress Extension
Informix Data Access Components
Luxena Common Library (needed by IDAC and dbExpress Extension)
...
Рейтинг: 0 / 0
09.11.2010, 18:21
    #36945655
Hijack_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Решил ни к кому не обращаться, а поставить тип decimal, и, о чудо, заработало. Спасибо! :)
...
Рейтинг: 0 / 0
10.11.2010, 09:50
    #36946316
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
кстати, вы бы узнали, если бы число не помещалось

$ dbaccess test -
Database selected.
> create table inttest(a int8);
Table created.
> insert into inttest values (92233720368547758070);
-1284 SQL error: Value will not fit in a BIGINT or an INT8.
...
Рейтинг: 0 / 0
10.11.2010, 13:57
    #36947252
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
Hijack_ 2) Server Studio for Informix
Наверное, старой версии ? И о "новых" типах еще ничего не знает...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
06.12.2011, 11:40
    #37560610
victor16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INT8 не такой уж и большой, как говорят
vasilisHijack_ 2) Server Studio for Informix
Наверное, старой версии ? И о "новых" типах еще ничего не знает...

Вчера меня тоже забодала ошибка:
-9272 The data type <type_name> is not supported for current client/server configuration.

The data type <type_name> is not supported for current client version.
Modify the query not to use the <type_name> data type or upgrade client version

Изучение командной строки :) старта ServerStudio показало, что он вызывается с параметром
-classpath "lib\ifxjdbc.jar"

Остальное просто, заменил этот файл на новую версию и теперь наслаждаюсь как выводятся на экран значения bigserial, bigint, int8 etc

С уважением
Виктор
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / INT8 не такой уж и большой, как говорят / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]