将varchar转换为布尔值

时间:2019-07-30 07:32:27

标签: sql postgresql sql-update sql-insert

我想将值从varchar字段“复制”到布尔值字段。在varchar字段中,我具有“是”和“否”之类的值。当我要填充布尔值字段时,出现一条错误消息,提示我需要进行类型转换。我认为我需要演员表,但我不知道该怎么写。

一个理论例子

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

2 个答案:

答案 0 :(得分:3)

您可以使用

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逻辑。或者直接喜欢将update用作:

UPDATE mytable
   SET booleanfield=varcharfield::boolean;
  

是“是”或“是”或“ y”或“ Y”会转换为true,               “否”或“否”或“ n”或“ N”被转换为false

Demo

答案 1 :(得分:2)

如果要更改现有行的列,则需要执行UPDATE。 INSERT用于创建全新的行。

您可以像这样更新列:

update mytable
   set boolean_column = varchar_column = 'yes'

请注意,这与您的CASE表达式略有不同,因为它会将所有非'yes'的内容都视为false。因此,值'foobar'也将被视为false

在线示例:https://rextester.com/IJTW96016