本文严禁在未征得本人同意的情况下以任何形式进行转载。本人只接受在邮件中的转载申请,如需转载,请发送邮件至 betteryou@126.com。
数据类型
布尔(BOOLEAN)类型
标准(Standard) | BOOLEAN类型是可选的(ID为T031的特性),这可能会让人感觉有些惊讶。但是,似乎无休止地对NULL在布尔值中如何解析妨碍了BOOLEAN成为核心数据类型的道路。
标准描述BOOLEAN可能是以下几种:
DBMS可能将NULL等同为未知(UNKOWN)。标准上没有明确规定DBMS在BOOLEAN中必须支持UNKOWN、NULL或者两者都支持。
标准定义了TRUE > FALSE。 |
PostgreSQL | 符合标准。
在布尔值中接受NULL,不接受UNKOWN。 |
DB2 | 不支持BOOLEAN类型。
从不同的JDBC文档来判断,IBM建议使用CHAR(1)来存储布尔值(包含’1’或’0’或NULL值)。 |
MS SQL Server | 不支持BOOLEAN类型。
可能的替代类型:BIT类型,值可为0、1或NULL。如果插入的整数值不在上述三个值当中,即被自动转换为1。 |
MySQL | 支持非标准的BOOLEAN类型。MySQL的BOOLEAN是TINYINT(1)类型的别名。
在JDBC中,切勿从类型为TINYINT(1)的列中取非布尔值。
MySQL的BOOLEAN类型接受TRUE和FALSE,分别为1和0。当然也可以指定其他值,例如9。
如果使用JDBC,最好使用BOOLEAN类型。MySQL的JDBC驱动可隐式将其与Java的boolean类型进行转换。 |
Oracle | 不支持BOOLEAN类型。
从不同的JDBC文档判断,Oracle推荐NUMBER(1)作为布尔值的存储类型,可接受0、1或者NULL。 |
根据JDBC的标准,getBoolean()必须将SQL的NULL值转换成为Java中的false。可使用wasNull()来判断列是否为空。