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.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies. ACEPTAR

Aviso de cookies