在Oracle和PG中都可以使用int類型模擬布爾類型,但通過JDBC接口(JDBC驅(qū)動(dòng),Oracle為11.2.0.4,PG為9.3)獲取出來的值卻不一致,這一點(diǎn)需要注意。
測(cè)試腳本
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代碼

創(chuàng)新互聯(lián)公司自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個(gè)性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營(yíng)銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗(yàn)、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團(tuán)隊(duì)及專業(yè)的網(wǎng)站設(shè)計(jì)師團(tuán)隊(duì)。
/*
*
*/
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
執(zhí)行結(jié)果
---------- PG -----------
id:1,c1:1,b1:true
id:2,c1:-1,b1:false
id:3,c1:2,b1:false
id:4,c1:0,b1:false
---------- Oracle -----------
id:1,c1:1,b1:true
id:2,c1:-1,b1:true
id:3,c1:2,b1:true
id:4,c1:0,b1:false
使用JDBC,在PG中,只有1視為T,其他為F;而在Oracle中,只有0視為F,其他視為T。
但在PG中,如把int轉(zhuǎn)換為boolean,則行為與Oracle一致。
[local]:5432 pg12@testdb=# create table tbl2(id int,c1 int);
CREATE TABLE
Time: 13.911 ms
[local]:5432 pg12@testdb=# insert into tbl2 values(1,1);
INSERT 0 1
Time: 5.091 ms
[local]:5432 pg12@testdb=# insert into tbl2 values(2,-1);
INSERT 0 1
Time: 2.653 ms
[local]:5432 pg12@testdb=# insert into tbl2 values(3,2);
INSERT 0 1
Time: 2.716 ms
[local]:5432 pg12@testdb=# insert into tbl2 values(4,0);
INSERT 0 1
Time: 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 TABLE
Time: 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=#
文章名稱:OraclevsPostgreSQLDevelop(18)-Boolean
網(wǎng)頁鏈接:http://www.chinadenli.net/article42/gpceec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、搜索引擎優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站策劃、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)