Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Money to numeric / 8 сообщений из 8, страница 1 из 1
15.10.2008, 17:38
    #35596531
Ziks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Money to numeric
Здравствуйте!

у меня следующая проблема:
Пытаюсь найти сумму SUM(babki)
babki тип money
Выпадает минусовая сумма, хотя записей с минусовыми значениями babki нет.
Погуглил, понял что проблема в типе money.
Но конвертнуть babki в numeric не получается.
может кто то сталкивался с такой проблемой, как решить?
заранее спасибо!
...
Рейтинг: 0 / 0
15.10.2008, 17:58
    #35596600
sourcer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Money to numeric
ZiksЗдравствуйте!

у меня следующая проблема:
Пытаюсь найти сумму SUM(babki)
babki тип money
Выпадает минусовая сумма, хотя записей с минусовыми значениями babki нет.
Погуглил, понял что проблема в типе money.
Но конвертнуть babki в numeric не получается.
может кто то сталкивался с такой проблемой, как решить?
заранее спасибо!


Какая версия постгреса? У меня на 8.3.3 все работет.
Может у вас в таблице встречаются разные валюты и в этом проблема?
...
Рейтинг: 0 / 0
15.10.2008, 18:03
    #35596616
valuez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Money to numeric
попробуй сделать тип

Код: plaintext
create type t_babki as numeric ( 5 , 2 );

и при создании таблицы просто указать тип

Код: plaintext
1.
2.
3.
4.
create table T1 (
id integer not null primary key,
babki t_babki not null
);
...
Рейтинг: 0 / 0
16.10.2008, 10:22
    #35597495
Ziks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Money to numeric
sourcer Какая версия постгреса?
подскажите плыз как посмотреть?

sourcerМожет у вас в таблице встречаются разные валюты и в этом проблема?
Нет валюта одна.
Минусовая сумма выпадает, потому что сумма выходит за рамки 21 млн.

valuez попробуй сделать тип
спасибо. Но таблица очень большая, больше 20 млн. Можно что нибудь придумать, чтоб не создавать ее заново?
...
Рейтинг: 0 / 0
16.10.2008, 10:48
    #35597593
Funny_Falcon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Money to numeric
Короткая попытка
Код: plaintext
1.
  alter table t2 alter column babki type numeric( 12 , 2 ) using regexp_replace( babki::text, '[^\\d.]','', 'g')::numeric;
Это сделает апдейт всех строк - так что займёт время.

Хотя, в 8.3 заявлено, что тип money имеет длину 8 байт и, соответственно, диапазон от -92233720368547758.08 до +92233720368547758.07 . Может просто апгрейд?
...
Рейтинг: 0 / 0
16.10.2008, 11:34
    #35597763
Ziks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Money to numeric
Пасиб.

гугл подсказал такое:
translate(textin(cash_out(babki)), '$,','')::numeric

вот теперь новая проблема, я добавил еще одно поле babki_new

update lave
set lave.babki_new = translate(textin(cash_out(lave.babki)), '$,','')::numeric

не катит.
ERROR: column "lave" of relation "lave" does not exist at character 22

Возможно в PostgreSQL нельзя апдейтить таблицу ссылаясь на саму себя?
...
Рейтинг: 0 / 0
16.10.2008, 11:47
    #35597812
V.V.L.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Money to numeric
Надо без love. (update может изменить только одну таблицу):

update lave
set babki_new = translate(textin(cash_out(babki)), '$,','')::numeric
...
Рейтинг: 0 / 0
16.10.2008, 11:51
    #35597824
Ziks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Money to numeric
ухты!! Внатуре, Как же я не додумался

пасиб...
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Money to numeric / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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