gpt4 book ai didi

Postgresql 9.4 将列文本更改为具有值的 bool 值

转载 作者:行者123 更新时间:2023-11-29 11:34:02 25 4
gpt4 key购买 nike

我有一个看起来像这样的表:

CREATE TABLE "TestResults" (
"Id" text PRIMARY KEY,
"Name" text NOT NULL UNIQUE,
"Result" text CHECK ("Comment" IN ('Pass', 'Fail')),
"CreatedBy" text NOT NULL,
"CreatedOn" timestamp with time zone NOT NULL,
);

我们正在使用 PostgreSQL 9.4

用户当前可以从下拉菜单中选择通过失败,我们已经将这些字符串存储在数据库中的结果中 列。我们想将其更改为 bool 值。

如何将 Result 列从文本更改为 bool 值,同时保留用户已输入的值?

谢谢。

最佳答案

任何时候您想要更改列的类型但没有从旧值到新值的默认转换,您想要使用 USING clause指定如何将旧值转换为新值:

The optional USING clause specifies how to compute the new column value from the old; if omitted, the default conversion is the same as an assignment cast from old data type to new. A USING clause must be provided if there is no implicit or assignment cast from old to new type.

所以首先摆脱 CHECK 约束,你可以通过 psql 中的 \d "TestResults" 找到名称,但它可能是 "TestResults_Result_check “:

alter table "TestResults" drop constraint "TestResults_Result_check";

然后使用 ALTER COLUMN(带有 USING 子句)来更改类型:

alter table "TestResults"
alter column "Result"
set data type boolean
using case
when "Result" = 'Pass' then true
when "Result" = 'Fail' then false
else null
end;

关于Postgresql 9.4 将列文本更改为具有值的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48877158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com