【问题标题】:Alter every double fields of a table更改表的每个双字段
【发布时间】:2011-09-19 20:49:44
【问题描述】:

我需要将表的每个双精度字段更改为 numeric(15,3) 类型, 我如何使用迭代给定表的字段的存储过程快速完成这项工作,如果类型是双精度,将列更改为数字?

【问题讨论】:

  • 你的表有多少字段,手动操作不实用?
  • 我需要修改一个表,其中 83 个或多或少 30 个字段是双精度的,需要转换为数字。

标签: sql postgresql plpgsql


【解决方案1】:

以下查询应返回查询以更新这些表...您可以根据需要添加表过滤器。复制结果并运行它。

select 'ALTER TABLE ' + table_name + ' ALTER COLUMN ' + column_name + 'TYPE numeric(15,3)'  
  from information_schema.columns 
 where data_type = 'double precision' 
       and table_name = 'YOUR_TABLE_NAME'

在运行前进行测试。我还没有测试这个。

【讨论】:

    【解决方案2】:

    而另一个问题将针对所有列进行;一个简单的“alter table [tablename] alter column [columnToAlter] type numeric(15,3)。您不需要通过游标运行它们;任何不会受此影响的值都应该不受影响。

    如果您不能通过更改数据类型本身来做到这一点,那么简单的 update [tablename] set [columnname] = cast(columnname as numeric(15,3) 也应该可以工作。

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 2013-03-11
      相关资源
      最近更新 更多