Oracle vs PostgreSQL Develop(18) - Boolean
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,在Oracle和PG中都可以使用int类型模拟布尔类型,但通过JDBC接口(JDBC驱动,Oracle为11.2.0.4,PG为9.3)获取出来的值却不一致,这一点需要注意。测试脚本drop tabl
千家信息网最后更新 2026年10月31日Oracle vs PostgreSQL Develop(18) - Boolean
在Oracle和PG中都可以使用int类型模拟布尔类型,但通过JDBC接口(JDBC驱动,Oracle为11.2.0.4,PG为9.3)获取出来的值却不一致,这一点需要注意。
测试脚本
drop table tbl1;create table tbl1(id int,c1 int);insert into tbl1 values(1,1);insert into tbl1 values(2,-1);insert into tbl1 values(3,2);insert into tbl1 values(4,0);Java代码
/* * */package testPG;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class TestBoolean { public static void main(String[] args) { System.out.println("---------- PG -----------"); try (Connection conn = DriverManager.getConnection("jdbc:postgresql://192.168.26.28:5432/testdb", "pg12", "pg12")) { TestBool(conn); } catch (SQLException se) { System.out.println(se.getMessage()); } catch (Exception e) { e.printStackTrace(); } finally { } // end try System.out.println("---------- Oracle -----------"); try (Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.18:1521:orcl", "test", "test")) { TestBool(conn); } catch (SQLException se) { System.out.println(se.getMessage()); } catch (Exception e) { e.printStackTrace(); } finally { } // end try } public static void TestBool(Connection conn) { try (PreparedStatement pstmt = conn.prepareStatement("SELECT id,c1 from tbl1"); ResultSet rs = pstmt.executeQuery();) { conn.setAutoCommit(true); while (rs.next()) { int id = rs.getInt("id"); int c1 = rs.getInt("c1"); boolean b1 = rs.getBoolean("c1"); System.out.println("id:" + id + ",c1:" + c1 + ",b1:" + b1); } } catch (SQLException se) { System.out.println(se.getMessage()); } catch (Exception e) { e.printStackTrace(); } finally { } // end try } // end} // end Class执行结果
---------- PG -----------id:1,c1:1,b1:trueid:2,c1:-1,b1:falseid:3,c1:2,b1:falseid:4,c1:0,b1:false---------- Oracle -----------id:1,c1:1,b1:trueid:2,c1:-1,b1:trueid:3,c1:2,b1:trueid:4,c1:0,b1:false使用JDBC,在PG中,只有1视为T,其他为F;而在Oracle中,只有0视为F,其他视为T。
但在PG中,如把int转换为boolean,则行为与Oracle一致。
[local]:5432 pg12@testdb=# create table tbl2(id int,c1 int);CREATE TABLETime: 13.911 ms[local]:5432 pg12@testdb=# insert into tbl2 values(1,1);INSERT 0 1Time: 5.091 ms[local]:5432 pg12@testdb=# insert into tbl2 values(2,-1);INSERT 0 1Time: 2.653 ms[local]:5432 pg12@testdb=# insert into tbl2 values(3,2);INSERT 0 1Time: 2.716 ms[local]:5432 pg12@testdb=# insert into tbl2 values(4,0);INSERT 0 1Time: 2.625 ms[local]:5432 pg12@testdb=# [local]:5432 pg12@testdb=# select id,c1 from tbl2; id | c1 ----+---- 1 | 1 2 | -1 3 | 2 4 | 0(4 rows)Time: 3.183 ms[local]:5432 pg12@testdb=# alter table tbl2 alter column c1 type boolean using c1::boolean;ALTER TABLETime: 30.581 ms[local]:5432 pg12@testdb=# select id,c1 from tbl2; id | c1 ----+---- 1 | t 2 | t 3 | t 4 | f(4 rows)Time: 2.566 ms[local]:5432 pg12@testdb=#
一致
只有
类型
代码
布尔
接口
结果
脚本
行为
测试
驱动
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海卓越科技互联网
今日互联网科技
科技信息互联网
中国互联网科技发展
宜安科技 互联网金融
互联网高科技企业
互联网科技视频素材
成都玖崟互联网科技有限公司乐商圈怎么样
玖二柒互联网科技公司待遇
深圳国际航运科技和互联网
常德市电业局互联网科技部
浙江互联网科技研学营
晓花互联网科技有限公司网址
搜狐科技互联网
无锡工业互联网科技有限公司
互联网企业科技类企业如何做账
互联网科技数字货币
东营紫格互联网科技
2021世界互联网领先科技成果发布
广州梦谷互联网科技有限公司领导
互联网为科技
腾讯科技 互联网女皇
美国互联网黑科技
上海万想互联网科技
金融科技和互联网金融
互联网科技热点资讯
栖莱科技互联网股份有限公司
速维有品互联网信息科技(苏州)有限公司
保险科技服务互联网营销体系
区块链结合互联网科技