改变表格的每个双字段

时间:2011-06-21 20:27:42

标签: sql postgresql plpgsql

我需要将表的每个双精度字段更改为数字(15,3)类型, 如何使用遍历给定表的字段的存储过程快速完成此任务,如果类型是双精度,则将列更改为数字?

2 个答案:

答案 0 :(得分: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'

在运行前测试它。我今年没试过。

答案 1 :(得分:0)

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

如果你不能通过改变数据类型本身来做到这一点,那么简单的更新[tablename] set [columnname] = cast(columnname as numeric(15,3))也应该有用。

希望有所帮助!