webForumDet fria alternativet

Hur byter jag typ från money till decimal på en kolumn i PostgreSQL?

Databaser & SQL

1 svar · 1 153 visningar · startad av erciz

Medlem sedan maj 20011 826 inlägg
Frågan#1

Jag vill byta typ på en kolumn som är money just nu. Men jag vill att kolumnen ska ha typen decimal.

Jag har provat med:

alter table my_table alter column my_column type decimal

Men får felet att money inte kan bli "castad" till decimal. Något förslag på hur jag kan lösa det?

Medlem sedan mars 20007 896 inlägg
#2

Använder du någon valutasymbol? Använder du komma eller punkt som tusental-separator?

Ett tips är ivf att använda USING, tillsammans med ett reguljärt uttryck. Jag tror att man kan göra det direkt, annars kan du få skapa en funktion för det;

alter table
    my_table
alter column
    my_column
type decimal
using regexp_replace(my_column::money::text, '[€,]', '', 'g')::numeric;

Möjligtvis. Exemplet använder € som valutasymbol och kommatecken som tusentals-separator.

Jag har ingen Postgres-installation jag kan testa med, det är möjligt att du måste gå vägen via en extern funktion.

252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)