Cambiar el tipo de dato de todos los campos

Category: SQL 10 years ago
Hola buen día.

Tengo una tabla como de 300 campos y algunos son decimal, otros varchar, requiero dejar todos como smallint unsigned y aquellos campos que tienen definido algún default dejarlos sin default.


De qué manera puedo hacerlo con instrucciones SQL, sin tener que estar poniendo alter table porque los campos tienen nombres diferentes. quisiera hacer algo como esto:


ciclo de 1 hasta el total de campos
actualizar campo1, campo2, campo3.... campoN a smallint


Espero haberme explicado, Saludos y Gracias de antemano
Like it on Facebook, +1 on Google, Tweet it or share this topic on other bookmarking websites.
  • Re: Cambiar el tipo de dato de todos los campos

    by » 10 years ago


    Podrías hacer un query para sacar los comados, algo como esto:

    select 'ALTER TABLE '+b.name + ' ALTER COLUMN ' + a.name + ' SMALLINT;', a.name,b.* from sys.columns a,
    sys.objects b
    where a.object_id = b.object_id
    and b.name = 'nombre_tabla';

  • Re: Cambiar el tipo de dato de todos los campos

    by » 10 years ago


    Hola buen día, gracias por la respuesta, aunque me sale que sys.columns no existe, la version de mysql que manejo es 5.0.18

    Saludos y gracias


    Lo corregí de esta manera:

    select CONCAT('ALTER TABLE ',a.TABLE_NAME, ' MODIFY COLUMN ' , a.COLUMN_NAME , ' SMALLINT;')as n
    from INFORMATION_SCHEMA.columns a
    where TABLE_SCHEMA = [base de datos]
    and TABLE_NAME =[tabla];


    La consulta la ejecuto sobre un software llamado EMS para MySQl, y el resultado lo copio y lo pego en el editor de consultas y lo ejecuto, y todo bien

    Saludos

  • Re: Cambiar el tipo de dato de todos los campos

    by » 10 years ago


    Es verdad, perdon te lo indique para SQL Server, en MySQL debe ser algo similar, accediendo a las tablas del sistema, como INFORMATION_SCHEMA.COLUMNS e INFORMATION_SCHEMA.TABLES. Realiza un join entre los dos de la misma manera que en el ejemplo de sql server y crea la instrucción.

    Saludos

You do not have permissions to reply to this topic.
Powered by CjForum