Ich habe eine SQL Server-Datenbank und habe gerade festgestellt, dass ich den Typ einer der Spalten von int
bis ändern kann bool
.
Wie kann ich das tun, ohne die Daten zu verlieren, die bereits in diese Tabelle eingegeben wurden?
Ich habe eine SQL Server-Datenbank und habe gerade festgestellt, dass ich den Typ einer der Spalten von int
bis ändern kann bool
.
Wie kann ich das tun, ohne die Daten zu verlieren, die bereits in diese Tabelle eingegeben wurden?
Antworten:
Sie können dies einfach mit dem folgenden Befehl tun. Jeder Wert von 0 wird in eine 0 umgewandelt (BIT = false), alles andere wird in 1 umgewandelt (BIT = true).
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
Die andere Möglichkeit besteht darin, eine neue Spalte vom Typ zu erstellen BIT
, sie aus der alten Spalte zu füllen. Wenn Sie fertig sind, löschen Sie die alte Spalte und benennen Sie die neue in den alten Namen um. Auf diese Weise können Sie jederzeit zurückgehen, wenn während der Konvertierung etwas schief geht, da Sie noch über alle Daten verfügen.
NULL
bleibt NULL
, 0
wird False
, werden Werte ungleich Null (1, -1, 1999, -987 ...) True
.
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
Hinweis: Wenn es eine Spaltengröße gibt, schreiben Sie einfach auch die Größe.
Wenn es sich um eine gültige Änderung handelt.
Sie können die Eigenschaft ändern.
Extras -> Optionen -> Designer -> Tabellen- und Datenbankdesigner -> Deaktivieren -> Speichern von Änderungen verhindern, die eine Neuerstellung der Tabelle erforderlich machten.
Jetzt können Sie den Spaltennamen einfach ändern, ohne die Tabelle neu zu erstellen oder Ihre Datensätze zu verlieren.
Warum glauben Sie, werden Sie Daten verlieren? Gehen Sie einfach in Management Studio und ändern Sie den Datentyp. Wenn der vorhandene Wert in bool (Bit) konvertiert werden kann, wird dies ausgeführt. Mit anderen Worten, wenn "1" in Ihrem ursprünglichen Feld "true" und "0" false entspricht, ist alles in Ordnung.
wenn Sie T-SQL (MSSQL) verwenden; Sie sollten dieses Skript ausprobieren:
ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5)
wenn Sie MySQL verwenden; Sie sollten dieses Skript ausprobieren:
ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5)
wenn Sie Oracle verwenden; Sie sollten dieses Skript ausprobieren:
ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)
Gehen Sie zu Tool-Option-Designer-Tabellen- und Datenbank-Designer und deaktivieren Sie die Option Speichern verhindern
Ändern Sie den Spaltendatentyp mit dem Prüftyp der Spalte:
IF EXISTS(
SELECT 1
FROM sys.columns
WHERE NAME = 'YourColumnName'
AND [object_id] = OBJECT_ID('dbo.YourTable')
AND TYPE_NAME(system_type_id) = 'int'
)
ALTER TABLE dbo.YourTable ALTER COLUMN YourColumnName BIT
Für mich in SQL Server 2016 mache ich das so
* Um Spalte Spalte1 in Spalte2 umzubenennen
EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'
* So ändern Sie den Spaltentyp von Zeichenfolge zu int :( Bitte stellen Sie sicher, dass die Daten im richtigen Format vorliegen. )
ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2 int;
Ich kann den Datentyp des Tabellenfelds mit der folgenden Abfrage ändern: und auch in der Oracle-Datenbank:
ALTER TABLE table_name
MODIFY column_name datatype;
Ersetzen Sie den Datentyp, ohne Daten zu verlieren
alter table tablename modify columnn newdatatype(size);