sql >> Databasteknik >  >> RDS >> Oracle

Ändra precisionen för numerisk kolumn i Oracle

Om du antar att du inte ställde in en precision från början, antas den vara den maximala (38). Du minskar precisionen eftersom du ändrar den från 38 till 14.

Det enklaste sättet att hantera detta är att byta namn på kolumnen, kopiera över data och sedan släppa den ursprungliga kolumnen:

alter table EVAPP_FEES rename column AMOUNT to AMOUNT_OLD;

alter table EVAPP_FEES add AMOUNT NUMBER(14,2);

update EVAPP_FEES set AMOUNT = AMOUNT_OLD;

alter table EVAPP_FEES drop column AMOUNT_OLD;

Om du verkligen vill behålla kolumnordningen kan du flytta data två gånger istället:

alter table EVAPP_FEES add AMOUNT_TEMP NUMBER(14,2);

update EVAPP_FEES set AMOUNT_TEMP = AMOUNT;

update EVAPP_FEES set AMOUNT = null;

alter table EVAPP_FEES modify AMOUNT NUMBER(14,2);

update EVAPP_FEES set AMOUNT = AMOUNT_TEMP;

alter table EVAPP_FEES drop column AMOUNT_TEMP;


  1. 2 sätt att konvertera mellan decimal och hexadecimal i MySQL

  2. PHP:flera SQL-frågor i en mysql_query-sats

  3. Finns det något sätt att definiera en namngiven konstant i en PostgreSQL-fråga?

  4. Automatisk skalning med Amazon Aurora Serverless