Cambiar una columna de nvarchar a tipo numérico


Sucede a veces que te has equivocado al hacer una tabla de la base de datos (mas de lo que me gustaría…)..

Ups

Y claro, una vez hecha ponerte a tumbar las constraints que dependen y volver a generar los datos tal vez no sea lo que mas ilusión nos haga.

Con las siguientes Query’s podemos resolver este inconveniente que, aunque podría haberlo hecho Microsoft de forma sencilla, nos obliga a ejecutar las siguientes cinco consultas.

sp_rename '[esquema].[tabla].[columna]', '[nombre_temporal]', 'COLUMN'");

ALTER TABLE [esquema].[tabla] ADD [columna], [tipo];

UPDATE [esquema].[tabla] SET [columna]=CASE WHEN isnumeric([nombre_temporal) = 1 THEN CONVERT([tipo], CONVERT(float, [nombre_temporal)) ELSE 0 END');
           
-- Si hay constraint, caso contrario no se hace
ALTER TABLE [esquema].[tabla] drop constraint [constraint_default]');

ALTER TABLE [esquema].[tabla] DROP COLUMN [nombre_temporal]

Y ya está, cambiado el tipo de la columna. Recuerda que si los datos no son compatibles se convertirán a 0

,

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.