Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 подскажите по типу number  [new]
olegeos
Member

Откуда:
Сообщений: 173
В таблице колонка number(16), после ввода данных(1234567890123456) получается что-то вроде 1.4300000Е15
Что можно сделать? (версия оракла 9)
12 янв 18, 09:21    [21099827]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
-2-
Member

Откуда:
Сообщений: 15330
olegeos
Что можно сделать?
что можно делать с числами
12 янв 18, 09:27    [21099852]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2757
olegeos,
ето визуальное отображение по умолчанию

зависит от средств вывода
напр
1) в плюсе col field format 9999999999999999 (или set numformat)
2) явно преобразовать в строку используя нужный формат to_char(field,'9999999999999999')

.....
stax
12 янв 18, 09:28    [21099857]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
olegeos
Member

Откуда:
Сообщений: 173
Дело в том, что программа грузит через (jdbc) в таблицу данные и потом они отражаются в веб приложении, ранее поле было короче (9 символов) после увеличения длины вместо 1234567890123456 стало 1.4444Е12. Неважно в приложении или через sqlplus.
В том же postgres такой проблемы нет.
12 янв 18, 09:36    [21099883]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
olegeos
потом они отражаются в веб приложении

Так с приложением и разбирайся, причем здесь Oracle? В БД числа хранятся одинаково независимо от количества цифр.
12 янв 18, 09:41    [21099897]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2757
olegeos,

select id,to_char(f,'9999999999999999') s,dump(f) d from table where id=xxx
что выдает?

xxx -ід записи с "длинным" значением

.....
stax
12 янв 18, 09:54    [21099957]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
olegeos
Member

Откуда:
Сообщений: 173
автор
to_char(f,'9999999999999999')

нормально выдает
12 янв 18, 10:20    [21100116]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
anvano
Member

Откуда: Москва
Сообщений: 986
olegeos
автор
to_char(f,'9999999999999999')

нормально выдает


Значит виновато клиентское приложение в таком отображении. Копайте там.
12 янв 18, 15:11    [21101863]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
exp98
Member

Откуда:
Сообщений: 2698
olegeos, а может из клиента передаётся стандартный тип double ? Он как раз 64 бита, или 15 десятичных цифр. А когда в него попадает большеее кол-во десятичных цифр, то в клиенте (или где-либо на стыке технологий) конвертируется в экспоненциальный формат? типа того. Нет?
12 янв 18, 17:58    [21102597]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54369
olegeos
В таблице колонка number(16), после ввода данных(1234567890123456) получается что-то вроде 1.4300000Е15
Что можно сделать? (версия оракла 9)
номера счетов и прочие идентификаторы лучше хранить как строки
12 янв 18, 22:51    [21103511]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
Foxter
Member

Откуда: Fairfield, CS, USA
Сообщений: 426
andreymx
olegeos
В таблице колонка number(16), после ввода данных(1234567890123456) получается что-то вроде 1.4300000Е15
Что можно сделать? (версия оракла 9)
номера счетов и прочие идентификаторы лучше хранить как строки


Идентификаторы как строки? А почему?
15 янв 18, 13:28    [21107487]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6692
Foxter,

Чтобы избежать проблем точности в последних разрядах и заменить их проблемами кодировки и сортировки.
15 янв 18, 14:55    [21107939]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54369
env
Foxter,

Чтобы избежать проблем точности в последних разрядах и заменить их проблемами кодировки и сортировки.
+ лидирующие нули по вкусу
15 янв 18, 15:13    [21108034]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10750
Foxter
Идентификаторы как строки? А почему?
Если федеральное казначейство не изменило правила, то лицевые счета государственных учреждений могут содержать (русские) буквы.
15 янв 18, 15:23    [21108078]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
Foxter
Member

Откуда: Fairfield, CS, USA
Сообщений: 426
env
Foxter,

Чтобы избежать проблем точности в последних разрядах и заменить их проблемами кодировки и сортировки.


И замедлить выборку, видимо? ))) Я, естественно только о числовых идентификаторах...
16 янв 18, 16:23    [21111393]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
-2-
Member

Откуда:
Сообщений: 15330
Foxter
И замедлить выборку
Дата занимает 7 байт. Количество дней с 1900-01-01 занимает 4 байта. Дни рождения ты как хранишь?
16 янв 18, 16:36    [21111450]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18336
-2-
Foxter
И замедлить выборку
Дата занимает 7 байт. Количество дней с 1900-01-01 занимает 4 байта. Дни рождения ты как хранишь?

Гм...
with t as (select trunc(sysdate)-date'1900-01-01' days from dual)
select days, dump(days) from t;

DAYS  DUMP(DAYS)
43114 Typ=14 Len=8: 106,168,0,0,0,0,0,0
16 янв 18, 16:46    [21111493]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
Foxter
Member

Откуда: Fairfield, CS, USA
Сообщений: 426
-2-
Foxter
И замедлить выборку
Дата занимает 7 байт. Количество дней с 1900-01-01 занимает 4 байта. Дни рождения ты как хранишь?


Я про поиск по тексту и связи с внешними таблицами при связи по регистрационному идентификатору документа
16 янв 18, 16:49    [21111506]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18336
Foxter
Я про поиск по тексту и связи с внешними таблицами при связи по регистрационному идентификатору документа

Покажи как замедляет.
16 янв 18, 16:50    [21111508]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
Foxter
Member

Откуда: Fairfield, CS, USA
Сообщений: 426
andrey_anonymous
Foxter
Я про поиск по тексту и связи с внешними таблицами при связи по регистрационному идентификатору документа

Покажи как замедляет.


Я не могу сейчас показать, но числа же сравниваются быстрее строк. Так как, насколько помню, строки сравниваются посимвольно, а числа целиком.
16 янв 18, 16:52    [21111515]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18336
Foxter
Я не могу сейчас показать, но числа же сравниваются быстрее строк.

Вот когда сможешь, тогда и приходи.
16 янв 18, 16:54    [21111521]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
Elic
Member

Откуда:
Сообщений: 29976
Foxter
Так как, насколько помню, строки сравниваются посимвольно, а числа целиком.
Чтобы помнить, нужно знать, а ты не знаешь.
16 янв 18, 17:06    [21111565]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
dbpatch
Member

Откуда:
Сообщений: 1130
andrey_anonymous
-2-
пропущено...
Дата занимает 7 байт. Количество дней с 1900-01-01 занимает 4 байта. Дни рождения ты как хранишь?

Гм...
with t as (select trunc(sysdate)-date'1900-01-01' days from dual)
select days, dump(days) from t;

DAYS  DUMP(DAYS)
43114 Typ=14 Len=8: 106,168,0,0,0,0,0,0


Что такое Typ=14

и что если добавить еще один trunc, какой тогда len,typ ?

with t as (select trunc(trunc(sysdate)-date'1900-01-01') days from dual)
select days, dump(days) from t;
16 янв 18, 17:08    [21111578]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
Foxter
Member

Откуда: Fairfield, CS, USA
Сообщений: 426
Elic
Foxter
Так как, насколько помню, строки сравниваются посимвольно, а числа целиком.
Чтобы помнить, нужно знать, а ты не знаешь.


Ну докажите противоположное, что скорость сравнения строк и чисел одинаковая. Раз уж так настаиваете на этом.
16 янв 18, 17:10    [21111580]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по типу number  [new]
dbpatch
Member

Откуда:
Сообщений: 1130
Foxter
Elic
пропущено...
Чтобы помнить, нужно знать, а ты не знаешь.


Ну докажите противоположное, что скорость сравнения строк и чисел одинаковая. Раз уж так настаиваете на этом.


погугли libc_hidden_builtin_def strncmp

строки давно сравниваются пачками байт - вплоть до того, что пачками по 16 байт как SSE2 числа
16 янв 18, 17:16    [21111597]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить