【问题标题】:postgresql changing column type from array to integer throwing casting errorpostgresql将列类型从数组更改为整数抛出转换错误
【发布时间】:2019-12-23 08:14:42
【问题描述】:

我正在将 postgresql 列数据类型从整数 [] 更改为整数,同时执行以下查询,

alter table contact_type alter column is_delete set data type integer USING is_delete::integer

我遇到了错误

ERROR:  cannot cast type integer[] to integer
LINE 1: ...umn is_delete set data type integer USING is_delete::integer
                                                              ^
SQL state: 42846
Character: 86

但是当尝试将数据类型从 varchar[] 更改为 char 时,下面的查询可以正常工作

alter table contact_type alter column ct_type set data type varchar 

我已经引用了这个链接so link,但它不适用于将数组转换为普通数据类型..

编辑:- 它是没有任何数据的空表...

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    您需要选择要使用的数组元素。你不能转换例如42 个整数到一个整数。

    例如如果你想使用数组的第一个元素:

    alter table contact_type  
        alter column is_delete 
        set data type integer USING is_delete[1];
    

    但名为is_delete 的列可能应该是boolean 而不是整数。

    【讨论】:

    • 我没有任何行。它是没有任何数据的空表
    • 但上面的alter语句有效,但它不适用于没有任何行的空表
    • is_delete 是值 0 和 1 的整数,我不想要任何定义布尔值的字符
    • a boolean 不是“字符” - 它是一个布尔值。该语句在空表上可以正常工作:dbfiddle.uk/…
    • 但在文档中,使用“USING is_delete::integer”将 integer[] 转换为整数类型,但它不起作用,因为 is_delete[1] 没有意义,如果表为空..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2012-01-10
    相关资源
    最近更新 更多