Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Rzutowanie typu w PostgreSQL

421 views
Skip to first unread message

P1t3r

unread,
Jun 17, 2005, 9:30:03 AM6/17/05
to
Witam

Mam taki problem. Są dwie tabele:
tabela_X - ma pole "Cena" /float8
tabela_Y - ma pole "Cena" /varchar(254)

Chcę przypisać wartości z tabela_Y do tabela_X za pomocą UPDATE:
UPDATE tabela_X SET Cena = tabela_Y.Cena WHERE tabela_X.cos = tabela_Y.cos;

Dodam, że obie tabele importuje z dbf przy pomocy Accessa (nie wiem czy
to dobre rozwiązanie, ale działa.

Czy macie pomysł jak to można zrobić ?


Pozdrawiam
Piotr Kocot

P1t3r

unread,
Jun 17, 2005, 9:33:34 AM6/17/05
to
P1t3r napisał(a):
> Witam
>

Zapomniałem napisać najważniejszego:
Ceny w tabela_Y mają taki format: 12,234,567.12 (12 milionów ...)

Pozdrawiam
Piotr

Michał Suchecki

unread,
Jun 17, 2005, 1:50:54 PM6/17/05
to
P1t3r wrote:
> Zapomniałem napisać najważniejszego:
> Ceny w tabela_Y mają taki format: 12,234,567.12 (12 milionów ...)

SELECT replace('12,234,567.12',',','')::float8;

zpp ms

--
We must never take these words too seriously
Words are very important but then if we take them too seriously
We destroy every thing...

Ronald Kuczek

unread,
Jun 17, 2005, 5:04:07 PM6/17/05
to
Użytkownik P1t3r napisał:

> Witam
>
> Mam taki problem. Są dwie tabele:
> tabela_X - ma pole "Cena" /float8
> tabela_Y - ma pole "Cena" /varchar(254)
>
> Chcę przypisać wartości z tabela_Y do tabela_X za pomocą UPDATE:
> UPDATE tabela_X SET Cena = tabela_Y.Cena WHERE tabela_X.cos = tabela_Y.cos;
>
Cos takiego jak:
UPDATE tabela_X SET Cena = tabela_Y.Cena::float8 WHERE tabela_X.cos =
tabela_Y.cos;
nie przejdzie ?

Pozdrawiam
Rony

P1t3r

unread,
Jun 18, 2005, 3:14:45 AM6/18/05
to
Ronald Kuczek napisał(a):

> Cos takiego jak:
> UPDATE tabela_X SET Cena = tabela_Y.Cena::float8 WHERE tabela_X.cos =
> tabela_Y.cos;
> nie przejdzie ?

Niestety:
ERROR: invalid input syntax for type double precision: " 1,146.7213"

Artur 'futrzak' Maśląg

unread,
Jun 18, 2005, 3:21:12 AM6/18/05
to
"P1t3r" <ko...@tlen.pl> napisał:
(...)

> Niestety:
> ERROR: invalid input syntax for type double precision: " 1,146.7213"
^^^^^^^^^^^^^^^

Czy to nie wyjaśnia przyczyny? (rozwiązanie ktos tu już podał)

P1t3r

unread,
Jun 18, 2005, 3:26:41 AM6/18/05
to
Michał Suchecki napisał(a):

>
> SELECT replace('12,234,567.12',',','')::float8;
>
> zpp ms
>


Wielkie dzięki, działa.

Piotr

Bartek Siebab

unread,
Jun 18, 2005, 4:13:12 AM6/18/05
to
P1t3r dnia 2005-06-17 15:30:

> Dodam, że obie tabele importuje z dbf przy pomocy Accessa (nie wiem czy
> to dobre rozwiązanie, ale działa.

ja do przyśpieszenia ładowania wsadów z dbf'a do postgtresa robię
trochę inaczej bo wszystko odbywa się pod freebsd:

1. najpierw dbf2txt z odpowiednim delimiterem pól
2. konwersja pl znaków w tych plikach txt
3. załadunek przy pomocy sqlowego copy

--
.---------- -------- ------ ---- ---- --- - -- -
| Bartek `saphire` Siebab http://bartek.siebab.net

Ronald Kuczek

unread,
Jun 18, 2005, 2:13:56 PM6/18/05
to
Użytkownik Artur 'futrzak' Maśląg napisał:
Rozwiązanie podał powyżej Michał Suchecki.
Proponuję też przeczytać opis funkcji to_number w dokumentacji.

Pozdrawiam
Rony

0 new messages