sql - 将 varchar 转换为 bool 值

标签 sql postgresql sql-update sql-insert

我想将值从 varchar 字段“复制”到 bool 字段。在 varchar 字段中,我有"is"和“否”之类的值。当我想输入我的 bool 字段时,我收到一条错误消息,提示我需要进行类型转换。我想我需要一个类型转换,但我不知道怎么写。

一个理论例子

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

最佳答案

你可以使用

varcharfield::boolean

将字符串转换为 bool 值

比如

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;

being 'Yes' or 'yes' or 'y' or 'Y' is converted to true, 'No' or 'no' or 'n' or 'N' is converted to false.

Demo

关于sql - 将 varchar 转换为 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57266490/

相关文章:

sql - 如何在 "generic"SQL 中编写 MySQL DATE_ADD()

php - 如何更新特定列而不重复并替换值

mysql - 如何仅在 MYSQL 数据库中查找和替换特定字符串的字符串

mysql - 在查询中列出特定数据

postgresql - 如何为Postgresql安装cube函数

mysql - SQL更新语句

Postgresql 查询每 45 天显示一次记录

sql - ORACLE 的 Postgres 转换 KEEP DENSE_RANK FIRST

sql - 组上的 Amazon Redshift Sum 窗口函数

JOIN 查询的 Php pdo 结果