如何将所有特定数据类型更改为整个表中的另一种数据类型

时间:2017-12-07 10:27:43

标签: sql sql-server

我有一个表table_name有50个十进制(18,0)列,我想将它的数据类型更改为十进制(18,6)

我正在尝试

ALTER TABLE [table_name] ALTER COLUMN [column_name] [data_type]

但为此,我要查询50次。

我如何在一个查询中执行此操作

2 个答案:

答案 0 :(得分:6)

您可以通过执行动态SQL查询轻松完成。

<强>查询

declare @sql as varchar(max);

select @sql = stuff((
        select 'alter table [your_table_name] 
        alter column [' + [column_name] + '] decimal(18, 6);'
        from information_schema.columns
        where [table_name] = 'your_table_name'
        and [data_type] = 'decimal'
        for xml path('')
    )
    , 1, 0, ''
);

exec(@sql);

答案 1 :(得分:0)

您必须添加由逗号分隔的所有colunm,即。

ALTER TABLE [table_name] ALTER COLUMN [column_name1] [data_type],[column_name2] [data_type],依此类推;