如何在 PGSQL 中将布尔列更改为位变化

Posted

技术标签:

【中文标题】如何在 PGSQL 中将布尔列更改为位变化【英文标题】:How to change a boolean column to bit varying in PGSQL 【发布时间】:2021-11-14 02:40:45 【问题描述】:
create table test_div1( i boolean)
    insert into test_div1 values('1');

ALTER TABLE test_div1 ALTER i TYPE bit varying  USING (i::text::bit varying ); 

//不工作得到错误。 请帮忙

【问题讨论】:

你为什么要这样做?你想解决什么问题? 【参考方案1】:

我认为你得到了error: "t" is not a valid binary digit,postgres 无法自动将true 转换为1

你需要做的就是像这样自己处理转换

create table test_div1( i boolean)

insert into test_div1 values('1');

insert into test_div1 values(false), ('1'), (true), ('0');

ALTER TABLE test_div1 ALTER i TYPE bit varying  USING (case when i = true then B'1' else B'0' end);

这是一个工作示例https://www.db-fiddle.com/f/wukNuibgNsJqzydNqz4eFy/0

【讨论】:

感谢您的详细回答。它成功了!

以上是关于如何在 PGSQL 中将布尔列更改为位变化的主要内容,如果未能解决你的问题,请参考以下文章

如何在sql查询中将列更改为行

如何在 MySQL 中将 mediumtext 列更改为 varchar? (换表)

如何在 Rails 迁移中将可空列更改为不可空?

如何将列更改为行

如何将我之前在 sql 中创建的列更改为外键

如何将列更改为行[重复]