|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Добрый день! Мой вопрос для большинства точно будет ламерским, так что не пугайтесь :). Создал табличку с некоторыми полями типа INT8, в которых необходимо хранить числа длиной до 16 цифр включительно, без дробной части (ее у меня не бывает). Полазив по интернету и заглянув на официальный сайт IBM нашел, что тип INT8 может хранить числа размерностью: –9,223,372,036,854,775,807 to 9,223,372,036,854,775,807. Так вот вопрос: не хранит он такие размеры. точные замеры я не делал, но 13 символов уже не хранит. 10 - хранит.. Что значит "не хранит": при insert или update при попытке записи большого числа в поля записываются NULL. Помогите кто чем сможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 16:47 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Hijack_, каким образом вставляли или модифицировали данные ? Возможно, это ограничение инструментария или API. Кстати, "10 цифр которые все таки хранятся" напоминают обычный 4-байтовый int с максимумом в 2 миллиарда. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 16:59 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
vasilisHijack_, каким образом вставляли или модифицировали данные ? Возможно, это ограничение инструментария или API. Кстати, "10 цифр которые все таки хранятся" напоминают обычный 4-байтовый int с максимумом в 2 миллиарда. Использовал 2 способа: 1) C++ DbXpress 2) Server Studio for Informix Интересно то, что то же самое на oracle и informix работает. Та же таблица, те же поля. Вот мне кажется, что что-то может быть не так с этим типом INT8. Может мой Informix сервер интерпретирует его как-то по своему его. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 17:14 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 17:46 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
попробуйте еще через строки: > insert into inttest values ('9223372036854775807'); 1 row(s) inserted. > select a||'' from inttest; (expression) 9223372036854775807 9223372036854775807 2 row(s) retrieved. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 17:51 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Хорошо, когда у других работает. Но мне сегодня не так везет, как остальным. Сделал аналогичный тест (copy + paste). Select вернул пустое поле.. Затем вставил в таблицу 123456789 и select вернул то, что я вставлял. Есть мысли? Может есть аналогичный большой тип (Только без плавающих точек) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 17:56 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Hijack_Хорошо, когда у других работает. Но мне сегодня не так везет, как остальным. Сделал аналогичный тест (copy + paste). Select вернул пустое поле.. Затем вставил в таблицу 123456789 и select вернул то, что я вставлял. Есть мысли? Может есть аналогичный большой тип (Только без плавающих точек) ? покажите insert into inttest values ('9223372036854775807'); select a||'' from inttest; select a from inttest; ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 17:57 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Журавлев Дениспопробуйте еще через строки: > insert into inttest values ('9223372036854775807'); . Тоже в итоге NULL :( ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 17:58 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Hijack_Журавлев Дениспопробуйте еще через строки: > insert into inttest values ('9223372036854775807'); . Тоже в итоге NULL :( и с конкатенацией с пустой строкой? select a ||' ' from inttest; ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 17:59 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Журавлев Денис покажите 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. Тут пусто. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 18:10 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
работайте с фиксированной точкой 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 18:10 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Hijack_ Тут есть мое число. что значит этот загадочный sql запрос? это конвертация в строку на стороне информикса. проблема в ваших инструментах, а не в информиксе. обращайтесь к разработчикам : 1) C++ DbXpress 2) Server Studio for Informix ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 18:12 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
вы кстати не пробовали 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) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 18:20 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Решил ни к кому не обращаться, а поставить тип decimal, и, о чудо, заработало. Спасибо! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2010, 18:21 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
кстати, вы бы узнали, если бы число не помещалось $ 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2010, 09:50 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
Hijack_ 2) Server Studio for Informix Наверное, старой версии ? И о "новых" типах еще ничего не знает... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2010, 13:57 |
|
INT8 не такой уж и большой, как говорят
|
|||
---|---|---|---|
#18+
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 С уважением Виктор ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2011, 11:40 |
|
|
start [/forum/topic.php?fid=44&msg=36945651&tid=1607225]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
28ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
255ms |
get tp. blocked users: |
0ms |
others: | 288ms |
total: | 589ms |
0 / 0 |