Ich muss ALTER
die Datentypen mehrerer Spalten in einer Tabelle.
Für eine einzelne Spalte funktioniert Folgendes einwandfrei:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0)
Aber wie ändere ich mehrere Spalten in einer Anweisung? Folgendes funktioniert nicht:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0),
CM_CommodityID NUMERIC(18,0)
sql-server
tsql
alter-column
D. Mahesh
quelle
quelle
Antworten:
Das ist nicht möglich. Sie müssen dies einzeln tun.
Sie können eine temporäre Tabelle mit Ihren geänderten Spalten erstellen, die Daten kopieren, Ihre ursprüngliche Tabelle löschen und Ihre temporäre Tabelle in Ihren ursprünglichen Namen umbenennen.
quelle
You will need to do this one by one.
also, was ist die große Sache, verwenden Sie einfach mehrereALTER TABLE ALTER COLUMN
Befehle?"Each statement means a new scan"
: Nicht unbedingt @erikkallen. In einigen Fällen ist die ALTER-Spalte eine einfache Metadatenänderung. Sie können gerne morgen an meinem Vortrag über "SQL Internals - Physical Table Structure under the hood, and implementation on real case scenarios
" teilnehmen, um alles in der Praxis zu sehen :-)Es ist nicht möglich, mehrere
ALTER COLUMN
Aktionen innerhalb einer einzelnenALTER TABLE
Anweisung auszuführen.Siehe die
ALTER TABLE
Syntax hierSie können mehrere
ADD
oder mehrere ausführenDROP COLUMN
, aber nur eineALTER COLUMN
.quelle
Wie andere geantwortet haben, benötigen Sie mehrere
ALTER TABLE
Anweisungen.Versuchen Sie Folgendes:
quelle
Die folgende Lösung ist keine einzelne Anweisung zum Ändern mehrerer Spalten, aber ja, sie macht das Leben einfach:
Generieren Sie das
CREATE
Skript einer Tabelle .Ersetzen Sie
CREATE TABLE
durchALTER TABLE [TableName] ALTER COLUMN
für die erste ZeileEntfernen Sie unerwünschte Spalten aus der Liste.
Ändern Sie die Spaltendatentypen nach Ihren Wünschen.
Führen Sie ein Suchen und Ersetzen… wie folgt durch:
NULL
,NULL; ALTER TABLE [TableName] ALTER COLUMN
Führen Sie das Skript aus.
Hoffe es spart viel Zeit :))
quelle
Wie viele andere bereits gesagt haben, müssen Sie mehrere
ALTER COLUMN
Anweisungen verwenden, eine für jede Spalte, die Sie ändern möchten.Wenn Sie alle oder mehrere Spalten in Ihrer Tabelle auf denselben Datentyp ändern möchten (z. B. das Erweitern eines VARCHAR-Felds von 50 auf 100 Zeichen), können Sie alle Anweisungen mithilfe der folgenden Abfrage automatisch generieren. Diese Technik ist auch nützlich, wenn Sie dasselbe Zeichen in mehreren Feldern ersetzen möchten (z. B. \ t aus allen Spalten entfernen).
Dadurch wird
ALTER TABLE
für jede Spalte eine Anweisung für Sie generiert .quelle
Wenn Sie die Änderungen in Management Studio vornehmen und Skripte generieren, wird eine neue Tabelle erstellt und die alten Daten mit den geänderten Datentypen in diese eingefügt. Hier ist ein kleines Beispiel zum Ändern der Datentypen von zwei Spalten
quelle
Wenn Sie nicht alles selbst schreiben und alle Spalten auf denselben Datentyp ändern möchten, kann dies Folgendes vereinfachen:
Sie können die Ausgabe als Abfrage kopieren und einfügen
quelle
quelle
Dank Evans Codebeispiel konnte ich es weiter modifizieren und spezifischer für Tabellen machen, die mit bestimmten Spaltennamen beginnen UND auch Besonderheiten für Einschränkungen behandeln. Ich habe diesen Code ausgeführt, dann die Spalte [CODE] kopiert und ohne Probleme ausgeführt.
quelle
quelle
Wir können mehrere Spalten in einer einzigen Abfrage wie folgt ändern:
Geben Sie die Abfragen einfach durch Komma getrennt an.
quelle
Setzen Sie die
ALTER COLUMN
Anweisung in eine Klammer, es sollte funktionieren.quelle
Wenn ich Ihre Frage richtig verstanden habe, können Sie mithilfe der unten genannten Abfrage mehrere Spalten in eine Tabelle einfügen.
Abfrage:
quelle