Ho un database SQL Server e ho appena capito che posso cambiare il tipo di una delle colonne da int
a bool
.
Come posso farlo senza perdere i dati già inseriti in quella tabella?
Ho un database SQL Server e ho appena capito che posso cambiare il tipo di una delle colonne da int
a bool
.
Come posso farlo senza perdere i dati già inseriti in quella tabella?
Risposte:
Puoi farlo facilmente usando il seguente comando. Qualsiasi valore di 0 verrà trasformato in 0 (BIT = false), qualsiasi altra cosa verrà trasformata in 1 (BIT = true).
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
L'altra opzione sarebbe quella di creare una nuova colonna di tipo BIT
, compilarla dalla vecchia colonna e, una volta terminato, rilasciare la vecchia colonna e rinominare quella nuova con il vecchio nome. In questo modo, se qualcosa durante la conversione va storto, puoi sempre tornare indietro poiché hai ancora tutti i dati ..
NULL
resti NULL
, 0
diventa False
, valori diversi da zero (1, -1, 1999, -987 ...) diventano True
.
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
Nota: se esiste una dimensione di colonne, basta scrivere anche la dimensione.
Se si tratta di una modifica valida.
puoi cambiare la proprietà.
Strumenti -> Opzioni -> Designer -> Designer di tabelle e database -> Deseleziona -> Impedisci il salvataggio delle modifiche che richiedevano la ricostruzione della tabella.
Ora puoi facilmente cambiare il nome della colonna senza ricreare la tabella o perdere i tuoi record.
Perché pensi che perderai i dati? Basta andare in Management Studio e cambiare il tipo di dati. Se il valore esistente può essere convertito in bool (bit), lo farà. In altre parole, se "1" viene mappato su true e "0" su false nel campo originale, andrà tutto bene.
se si utilizza T-SQL (MSSQL); dovresti provare questo script:
ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5)
se usi MySQL; dovresti provare questo script:
ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5)
se usi Oracle; dovresti provare questo script:
ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)
Vai a Strumenti-Opzioni-designer-Tabella e Database designer e Deseleziona Impedisci salvataggio opzione
Modifica il tipo di dati della colonna con il tipo di controllo della colonna:
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
per me, in SQL Server 2016, lo faccio in questo modo
* Per rinominare la colonna da Colonna1 a colonna2
EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'
* Per modificare il tipo di colonna da stringa a int :( Assicurarsi che i dati siano nel formato corretto )
ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2 int;
Sostituisci il tipo di dati senza perdere dati
alter table tablename modify columnn newdatatype(size);