从MySQL迁移到PostgreSQL:如何向表插入布尔值?
解决PostgreSQL布尔类型插入数据的问题
方法1:使用PostgreSQL原生布尔字面量
PostgreSQL支持多种标准布尔值写法,直接插入即可,大小写不敏感:
-- 插入真值 INSERT INTO test VALUES (TRUE); INSERT INTO test VALUES (t); INSERT INTO test VALUES (yes); -- 插入假值 INSERT INTO test VALUES (FALSE); INSERT INTO test VALUES (f); INSERT INTO test VALUES (no);
方法2:显式转换整数为布尔类型
如果习惯用1/0表示布尔值,可通过类型转换让PostgreSQL识别:
-- 使用CAST函数转换 INSERT INTO test VALUES (CAST(1 AS BOOLEAN)); INSERT INTO test VALUES (CAST(0 AS BOOLEAN)); -- 使用PostgreSQL特有的类型转换语法 INSERT INTO test VALUES (1::BOOLEAN); INSERT INTO test VALUES (0::BOOLEAN);
转换规则:非零整数会转为TRUE,0转为FALSE。
方法3:兼容MySQL写法(不推荐)
若要完全兼容MySQL的整数直接插入逻辑,可通过修改列或添加隐式转换实现,但会破坏PostgreSQL的类型严谨性,生产环境谨慎使用:
-- 修改列,强制转换已有数据(若列有数据) ALTER TABLE test ALTER COLUMN state TYPE BOOLEAN USING state::BOOLEAN; -- 创建整数到布尔的隐式转换(需超级用户权限) CREATE CAST (integer AS boolean) WITH INOUT AS IMPLICIT;
内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito
相关产品推荐
相关产品推荐

