it-swarm.com.de

So ändern Sie den Spaltendatentyp in der SQL-Datenbank, ohne Daten zu verlieren

Ich habe eine SQL Server-Datenbank und habe gerade festgestellt, dass ich den Typ einer der Spalten von int in bool ändern kann. 

Wie kann ich das tun, ohne die Daten zu verlieren, die bereits in diese Tabelle eingegeben wurden? 

169
Ivan Stoyanov

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 (BIT = true).

ALTER TABLE dbo.YourTable
   ALTER COLUMN YourColumnName BIT

Die andere Option wäre, eine neue Spalte vom Typ BIT zu erstellen, sie aus der alten Spalte auszufüllen. Wenn Sie fertig sind, löschen Sie die alte Spalte und benennen Sie die neue Spalte in den alten Namen um. Wenn also während der Konvertierung etwas schief geht, können Sie immer zurückgehen, da Sie noch alle Daten haben.

289
marc_s

Wenn es eine gültige Änderung ist.

sie können die Eigenschaft ändern.

Extras -> Optionen -> Designer -> Tabellen- und Datenbankdesigner -> Deaktivieren -> Verhindern, dass Änderungen gespeichert werden, die eine erneute Erstellung der Tabelle erfordern.

Jetzt können Sie den Spaltennamen problemlos ändern, ohne die Tabelle neu zu erstellen oder Ihre Datensätze zu verlieren.

14
Sathish
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)

Hinweis: Wenn es eine Spaltengröße gibt, geben Sie auch die Größe an.

11

Warum glauben Sie, dass Sie Daten verlieren werden? 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 auf "true" und "0" auf "false" gesetzt wird, sind Sie in Ordnung.

7

Gehen Sie zu Tool-Option-Designers-Table- und Database-Designers, und deaktivieren Sie die Option Speichernoption verhindern enter image description here

3

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)
3
NullException

Spaltendatentyp mit Checktyp der Spalte ändern:

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
1
Ebrahim Sabeti

für mich in sql server 2016 mache ich das so

* Um die Spalte Spalte1 in Spalte2 umzubenennen 

EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'

* Zum Ändern der Spalte Typ von string in int :( Bitte stellen Sie sicher, dass die Daten das richtige Format haben )

ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2  int; 
0
MNF

In der Compact Edition nimmt die Größe automatisch für den Datetime-Datentyp an, d. H.

0
Hardik