【问题标题】:Postgres: Rewrite boolean datatype to numericPostgres:将布尔数据类型重写为数字
【发布时间】:2018-01-09 09:43:02
【问题描述】:

我有一个包含许多表的数据库,其中包含许多布尔类型的列。但是我的软件不支持布尔作为数据类型。他们的支持团队告诉我应该使用 numeric(1,0) 而不是 boolean,所以我尝试了:

ALTER TABLE foo ALTER COLUMN bar TYPE numeric(1,0) USING bar::numeric(1,0)

我收到一个错误:无法将布尔值转换为数字类型。
我该怎么做才能用数字替代替换布尔列并保留布尔行为?这个 numeric(1,0) 的东西还能用吗?

【问题讨论】:

    标签: sql postgresql type-conversion boolean


    【解决方案1】:

    你需要一个额外的步骤 - 首先转换为 int:

    t=# select true::int::numeric(1,0);
     numeric 
    ---------
           1
    (1 row)
    

    所以你的情况是:

    ALTER TABLE foo ALTER COLUMN bar TYPE numeric(1,0) USING bar::int::numeric(1,0)
    

    但坦率地说,我相信只需转换为 int 就足够了。

    【讨论】:

    • 不,t 是布尔值或文本。在你的情况下,它显然是布尔值。 int 代表整数,应该显示 10...
    猜你喜欢
    • 2016-04-08
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2019-05-01
    相关资源
    最近更新 更多