![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBO
Feldtyp ändern
Hallo,
ich möchte in einer Tabelle ein Feldtyp ändern. Feld Faktor ist DOUBLE PRECISION (Dom_Betrag) soll geändert werden in Numeric (DOM_Faktor) Das Feld enthält bereits Werte und dürfen nicht verlorengehen. Gibt es hier eine einfache Lösung? Vielen Dank für jeden Tipp. |
AW: Feldtyp ändern
Vielleicht erst mal eine zusätzliche Spalte anfügen und die Werte dann übertragen.
Wenn die gut aussehen, kannst Du das ursprüngliche Feld auf den gewünschten neuen Datentyp umwandeln und die Werte dann zurückkopieren. Pseudo-Code:
Code:
Wenn hier dann keine Werte rausgekommen sind, dann beherzt weitermachen...
// Neues Feld
alter table blabla add field tempfield decimal (10,2); // Alte Werte kopieren update table blabla set tempfield = sourcefield; // Auf Unterschiede abfragen select * from blabla where temfield <> sourcefield; |
AW: Feldtyp ändern
|
AW: Feldtyp ändern
Hallo,
alter table alter column Und dann den Inhalt überprüfen. |
AW: Feldtyp ändern
Zitat:
Nur wenn es praktisch 1:1 ohne Anpassung in die neue Definition geht funktioniert das. Als z.B. beim vergrößern von varchar-Spalten. |
AW: Feldtyp ändern
Hallo,
Zitat:
Char(20) -> VarChar(20) Smallint -> Integer Im gegebenen Fall spielt aber die Frage der unterschiedlichen Interpretation der Datentypen eine Rolle. -> Da darf sich der TE aber selber drum kümmern. Deshalb meine Info zu "Prüfen" |
AW: Feldtyp ändern
Jo, neu erstellen, umkopieren+casten und das Alte löschen geht immer.
Man kann auch das Alte erstmal nicht löschen. So hat man die originalen Werte immernoch, falls etwas schief ging und man es später erst bemerkt. In der 2.0er-Hilfe steht nichts davon (die 2.5er sah ich grade nicht), aber scheinbar soll es das wirlich geben: (jedenfalls schrieben mehrere das als Lösung, wenn jemand irgendwo nach deinem Problem fragte, und andere DBMS nutzen die selbe Syntax)
SQL-Code:
ALTER TABLE Tabelle ALTER COLUMN Faktor TYPE NUMERIC; -- oder SET DATA TYPE statt TYPE
Sollte es wirklich gehen (Syntax wird nicht abgelehnt), aber es mit dem Inhalt Probleme geben, dann auch gleich mal das versuchen:
SQL-Code:
ALTER TABLE Tabelle ALTER COLUMN Faktor TYPE NUMERIC USING Cast(Faktor AS NUMERIC); -- im USING den "neuen" Inhalt berechnen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz