首页 > 解决方案 > 将 varchar 转换为布尔值

问题描述

我想将值从 varchar 字段“复制”到布尔字段。在 varchar 字段中,我有“yes”和“no”之类的值。当我想提供我的布尔字段时,我有一条错误消息表明我需要进行类型转换。我想我需要一个演员表,但我不知道怎么写。

一个理论例子

INSERT INTO mytable (booleanfield)
VALUES (
    SELECT CASE 
        WHEN varcharfield like 'yes' THEN 'true' 
        WHEN varcharfield like 'no' THEN 'false'
        END
        FROM mytable);

标签: sqlpostgresqlsql-updatesql-insert

解决方案


您可以使用

varcharfield::boolean

将您的字符串转换为布尔值

INSERT INTO mytable2(booleanfield,varcharfield)
SELECT varcharfield::boolean,varcharfield FROM mytable;

mytable2 由

CREATE TABLE mytable2 AS SELECT * FROM mytable WHERE 1=0

取决于问题中的insert逻辑。或者直接更喜欢使用updateas :

UPDATE mytable
   SET booleanfield=varcharfield::boolean;

是 'Yes' 或 'yes' 或 'y' 或 'Y' 转换为true, 'No' 或 'no' 或 'n' 或 'N' 转换为false.

Demo


推荐阅读