主流数据库之间对SQL:2003标准的不同实现方法比较(第六部分 基础数据类型之BOOLEAN)

本文严禁在未征得本人同意的情况下以任何形式进行转载。本人只接受在邮件中的转载申请,如需转载,请发送邮件至 betteryou@126.com。

 

数据类型

 

布尔(BOOLEAN)类型

 

标准(Standard)

BOOLEAN类型是可选的(IDT031的特性),这可能会让人感觉有些惊讶。但是,似乎无休止地对NULL在布尔值中如何解析妨碍了BOOLEAN成为核心数据类型的道路。

 

标准描述BOOLEAN可能是以下几种:

  • TRUE
  • FALSE
  • UNKOWN/NULL

 

DBMS可能将NULL等同为未知(UNKOWN)。标准上没有明确规定DBMSBOOLEAN中必须支持UNKOWNNULL或者两者都支持。

 

标准定义了TRUE > FALSE

PostgreSQL

符合标准。

 

在布尔值中接受NULL,不接受UNKOWN

DB2

不支持BOOLEAN类型。

 

从不同的JDBC文档来判断,IBM建议使用CHAR(1)来存储布尔值(包含’1’’0’NULL)

MS SQL Server

不支持BOOLEAN类型。

 

可能的替代类型:BIT类型,值可为01NULL。如果插入的整数值不在上述三个值当中,即被自动转换为1

MySQL

支持非标准的BOOLEAN类型。MySQLBOOLEANTINYINT(1)类型的别名。

 

JDBC中,切勿从类型为TINYINT(1)的列中取非布尔值。

 

MySQLBOOLEAN类型接受TRUEFALSE,分别为10。当然也可以指定其他值,例如9

 

如果使用JDBC,最好使用BOOLEAN类型。MySQLJDBC驱动可隐式将其与Javaboolean类型进行转换。

Oracle

不支持BOOLEAN类型。

 

从不同的JDBC文档判断,Oracle推荐NUMBER(1)作为布尔值的存储类型,可接受01或者NULL

 

根据JDBC的标准,getBoolean()必须将SQLNULL值转换成为Java中的false。可使用wasNull()来判断列是否为空。

 

原文参考:Comparison of different SQL implementations

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值