Tengo una base de datos de SQL Server y me acabo de dar cuenta de que puedo cambiar el tipo de una de las columnas int
a bool
.
¿Cómo puedo hacer eso sin perder los datos que ya se ingresaron en esa tabla?
Tengo una base de datos de SQL Server y me acabo de dar cuenta de que puedo cambiar el tipo de una de las columnas int
a bool
.
¿Cómo puedo hacer eso sin perder los datos que ya se ingresaron en esa tabla?
Respuestas:
Puede hacerlo fácilmente con el siguiente comando. Cualquier valor de 0 se convertirá en 0 (BIT = falso), cualquier otra cosa se convertirá en 1 (BIT = verdadero).
ALTER TABLE dbo.YourTable
ALTER COLUMN YourColumnName BIT
La otra opción sería crear una nueva columna de tipo BIT
, llenarla de la columna anterior y, una vez que haya terminado, suelte la columna anterior y cambie el nombre de la nueva por el nombre anterior. De esa manera, si algo sale mal durante la conversión, siempre puede regresar ya que todavía tiene todos los datos.
NULL
permanece NULL
, se 0
convierte , se convierten False
en valores distintos de cero (1, -1, 1999, -987 ...) True
.
ALTER TABLE tablename
ALTER COLUMN columnname columndatatype(size)
Nota: si hay un tamaño de columnas, simplemente escriba el tamaño también.
Si es un cambio válido.
Puedes cambiar la propiedad.
Herramientas -> Opciones -> Diseñadores -> Diseñadores de tablas y bases de datos -> Desmarcar -> Evitar guardar cambios que requirieron la recreación de la tabla.
Ahora puede cambiar fácilmente el nombre de la columna sin volver a crear la tabla o perder sus registros.
¿Por qué crees que perderás datos? Simplemente vaya a Management Studio y cambie el tipo de datos. Si el valor existente se puede convertir a bool (bit), lo hará. En otras palabras, si "1" se asigna a verdadero y "0" se asigna a falso en su campo original, estará bien.
si usa T-SQL (MSSQL); deberías probar este script:
ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5)
si usa MySQL; deberías probar este script:
ALTER TABLE [Employee] MODIFY COLUMN [Salary] NUMERIC(22,5)
si usa Oracle; deberías probar este script:
ALTER TABLE [Employee] MODIFY [Salary] NUMERIC(22,5)
Vaya a Herramienta-Opción-diseñadores-Diseñadores de tablas y bases de datos y desactive la opción Guardar
Altere el tipo de datos de columna con el tipo de verificación de columna:
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
para mí, en SQL Server 2016, lo hago así
* Para cambiar el nombre de la columna Columna1 a la columna2
EXEC sp_rename 'dbo.T_Table1.Column1', 'Column2', 'COLUMN'
* Para modificar el tipo de columna de cadena a int :( Asegúrese de que los datos estén en el formato correcto )
ALTER TABLE dbo.T_Table1 ALTER COLUMN Column2 int;
Reemplace el tipo de datos sin perder datos
alter table tablename modify columnn newdatatype(size);