更改列类型的字符(3)可以在不丢失数据的情况下进行布尔值



我正在使用Postgres。我创建了一个表xyz具有character varying(3)类型的abc之一。我在abc列中保存了'YES''NO'

我将数据存储在表中一段时间。但是现在的要求已经改变。我们需要将abc列类型从character varying(3)更改为boolean

有什么方法可以将abc类型从character varying(3)更改为boolean,然后将数据YES更改为true,将NO更改为false

请帮助我,否则,如果我们不想丢失数据,我该如何继续。

我使用查询

ALTER TABLE xyz ALTER abc TYPE boolean
USING CASE abc WHEN 'YES' THEN TRUE ELSE FALSE END;

但是它不起作用,它不能自动施放错误以键入布尔

您缺少abcWHEN之间的空间:

ALTER TABLE xyz ALTER abc TYPE boolean
USING CASE abc WHEN 'YES' THEN TRUE ELSE FALSE END;
-- Here ------^

另外,您可能需要确保仅将'YES''NO'转换为布尔值:

ALTER TABLE xyz ALTER abc TYPE boolean
USING CASE abc WHEN 'YES' THEN TRUE 
               WHEN 'NO'  THEN FALSE 
      END;

相关内容

最新更新