Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#2

AW: Den Typ einer Spalte nachträglich ändern. Daten sollen bestehen bleiben

  Alt 16. Feb 2016, 11:36
Man kann da bestimmt auch eine Konvertierungsfunktion mit angeben, welche man für eine explizite Konvertierung nutzen kann.
In deiner Richtung sollte die Standardkonvertierung aber ausreichen.

Wenn meineSpalte INTEGER ist und meineSpalte::VARCHAR bzw. CAST(meineSpalte AS VARCHAR) funktioniert, oder wie auch immer ein CAST geht, dann kann man die manuelle Konvertierung weglassen.

Ansonsten ginge auch vorher ein UPDATE, wo alles "Ungültige" entfernt wird.



Aber eigentlich würde ich auch erwarten, daß bei unmöglicher Konvertierung (veränderte Inhalte, bzw. Datenverlust) ein Fehler geworfen wird.
Also z.B. auch bei VARCHAR(5) -> VARCHAR(10) = OK, aber VARCHAR(10) -> VARCHAR(5) = Fehler, wenn ein Text länger als 5 ist.


SQL-Code:
-- in PostgrSQL
ALTER TABLE [ ONLY ] name [ * ] ALTER [ COLUMN ] column [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
SQL-Code:
ALTER TABLE meineTabelle
ALTER COLUMN meineSpalte
TYPE CHAR(40)
USING cast(meineSpalte AS CHAR(40)) -- upper(trim(substr(meineSpalte, 3, 5)))
entspricht
SQL-Code:
UPDATE meineTabelle
SET meineSpalte = cast(meineSpalte AS CHAR(40));

ALTER TABLE meineTabelle
ALTER COLUMN meineSpalte
TYPE CHAR(40);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Feb 2016 um 11:54 Uhr)
  Mit Zitat antworten Zitat