Ho un database SQL Server e ho appena capito che posso cambiare il tipo di una delle colonne da inta 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 inta 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 ..
NULLresti NULL, 0diventa 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);