【问题标题】:PostgreSQL : converting existing double precision column to integer data typePostgreSQL:将现有的双精度列转换为整数数据类型
【发布时间】:2014-12-15 19:19:12
【问题描述】:

我在 PostgreSQL 中有一个包含数字的列。该列的数据类型是双精度,并且数字有很多十进制数字。我不需要那种精确度。整数就足够了。

如何将列重新定义为具有整数数据类型,同时舍入当前现有数据以获得整数?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    只需修改表格,Postgres 会通过适当的舍入自动将双精度值转换为整数:

    ALTER TABLE foo ALTER COLUMN some_column TYPE integer;
    

    这基本上与以下内容相同:

    ALTER TABLE foo ALTER COLUMN some_data TYPE integer 
       USING round(some_data)::integer;
    

    SQLFiddle:http://sqlfiddle.com/#!15/4ea3c/1

    【讨论】:

    • 试过这个并得到“错误:整数超出范围”。也许是因为列中有一些空值?它们应该保持为空。
    • @SLeon: 那么你需要使用bigint 而不是integer
    • bigint 也不一定有效,例如select 1e100::bigint
    猜你喜欢
    • 2014-04-18
    • 2016-03-13
    • 1970-01-01
    • 2023-03-23
    • 2014-12-31
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多