有趣的是,布尔类型只是在SQL标准后期才引入,即SQL:1999 。 即使在今天,并非所有数据库本身都支持BOOLEANBIT类型。 最重要的是,我们仍然可以在Oracle中等待一段时间。 这是2002年以来关于该主题的“问汤姆”的观点: https : //asktom.oracle.com/pls/apex/f?p=100 :11:0 ::::: P11_QUESTION_ID: 6263249199595

甲骨文 为什么没有布尔值?

人们通过使用数字或字符串文字来解决此限制。 例如1 / 0Y / NT / F或SQL标准'true' / 'false'

JDBC中的布尔值

从JDBC API的角度来看,可以通过PreparedStatement.setBoolean()将布尔值设置为绑定值,也可以通过ResultSet.getBoolean()和类似方法从结果集中ResultSet.getBoolean()布尔值。 如果您的数据库支持布尔值,则Java boolean类型可以很好地映射到SQL BOOLEAN ,即使Java的Boolean包装器类型更适合尊重NULLs

但是,如果要将布尔值存储在INTEGERCHAR(1)VARCHAR(1)列中,则在各种数据库中情况看起来会有所不同。 考虑以下示例:

CREATE TABLE booleans (val char(1)
);

然后,运行此Java程序(我们使用jOOQ保持简洁)

try {DSL.using(configuration).execute("insert into boolean (val) values (?)", true);
}
catch (Exception e) {e.printStackTrace();
}DSL.using(configuration).fetch("select * from booleans");

并非所有的数据库/ JDBC驱动程序都支持上述功能。 这些数据库将运行上述程序:

  • 火鸟(插入“ Y”或“ N”)
  • HSQLDB(插入“ 1”或“ 0”)
  • IBM DB2(插入“ 1”或“ 0”)
  • MariaDB(插入“ 1”或“ 0”)
  • Microsoft Access(插入“ 1”或“ 0”)
  • MySQL(插入'1'或'0')
  • Oracle(插入“ 1”或“ 0”)
  • SQL Server(插入“ 1”或“ 0”)
  • Sybase(插入'1'或'0')

……而这些数据库将抛出异常:

  • BR
  • 德比
  • H2
  • 英格利斯
  • PostgreSQL的
  • SQLite的

SQL标准中的布尔值

值得一提的是,SQL标准在CAST()函数的规范中指定了如何处理从boolean到字符串的转换:

6.13 <cast specification>
[...]
10) If TD is fixed-length character string, then let LTD be the length in charactersof TD.
[...]
e) If SD is boolean, then
Case:
i) If SV is True and LTD is not less than 4, then TV is 'TRUE' extended on the right byLTD–4
s.
ii) If SV is False and LTD is not less than 5,then TV is 'FALSE' extended on the right byLTD–5 <space>s.
iii) Otherwise, an exception condition is raised: data exception — invalid charactervalue for cast.

因此,即使从历史的角度来看,应该接受1/0的行为,但大多数开放源代码数据库都显示了可以解释为“正确”的行为。 使用开放源代码测试数据库时,请注意此限制!

有关此数据库和H2数据库的更多信息,请参考H2用户组上的该线程 。

参考:来自JAVA,SQL和JOOQ博客的JCG合作伙伴 Lukas Eder 的JDBC布尔兼容性列表 。

翻译自: https://www.javacodegeeks.com/2014/03/the-jdbc-boolean-compatibility-list.html

JDBC布尔兼容性列表相关推荐

  1. jdbc和jdbc驱动_JDBC布尔兼容性列表

    jdbc和jdbc驱动 有趣的是,布尔类型只是在SQL标准后期才引入,即SQL:1999 . 即使在今天,并非所有数据库本身都支持BOOLEAN或BIT类型. 最重要的是,我们仍然可以在Oracle中 ...

  2. python 空列表对象的布尔值_python – 从TensorFlow对象中检索数据 – 来自correct_prediction的布尔值列表...

    我正在讨论MNIST初学者教程( http://www.tensorflow.org/tutorials/mnist/beginners/index.html),并尝试从correct_predict ...

  3. VMware 兼容性列表与产品互操作性列表使用收集(持续更新中...)

    目录 一.VMware 兼容性列表查询 查询网址: 查询例子1:服务器CPU兼容性查询 二.vSAN兼容性查询 查询网址: 查询例子1:vSAN认证的RAID卡兼容性 三.VMware 产品互操作性列 ...

  4. 华三服务器操作系统兼容列表,FlexServer服务器操作系统兼容性列表.PDF

    FlexServer服务器操作系统兼容性列表 文档名称 文档密级 FlexServer服务器操作系统兼容性列表 1 H3C FlexServer R390 服务器操作系统兼容性列表 操作系统列表 备注 ...

  5. 华为服务器兼容助手,华为FusionServer RH2288 V3服务器兼容性列表.pdf

    华为FusionServer RH2288 V3服务器兼容性列表.pdf Huawei FusionServer RH2288 V3 Server Compatibility List Issue 3 ...

  6. amazeui学习笔记一(开始使用3)--兼容性列表compatibility

    amazeui学习笔记一(开始使用3)--兼容性列表compatibility 一.总结 1.不要用ie做前端测试,不要碰ie,尽量用google 浏览器: 按照微软官方的说法,IE 开发者工具中的浏 ...

  7. 华为桌面云解决方案兼容性列表

    本文对华为桌面云解决方案的常见应用软件和外设兼容性进行了说明,供一线与客户交流时参考.不在兼容列表中的软件或外设,并不代表其不被兼容,但建议进行一步的验证.

  8. amaze 绝对位置 html,Amaze UI 兼容性列表

    由于Amaze UI 面向现代浏览器开发,因此,Amaze UI 对 IE 8/9 等浏览器只提供有限的支持. 注意: 请不要使用 IETester 这种不靠谱的工具测试: 按照微软官方的说法,IE ...

  9. python 数据类型:整型 字符串 布尔值 列表 元组 字典 集合

    不可变类型:整型 字符串 整型 字符串 可变类型:列表 字典 一.列表常用命令 #增删改查 #查  切片 [] # print(a[1:])#取到最后 # print(a[1:-1])#取到倒数第二值 ...

最新文章

  1. python基础知识面试题-python的一些基本概念知识和面试题
  2. 2020下半年软考-系统架构设计师-惜败
  3. python求两数最大公因数_『用python求俩个数的最大公约数和最小公倍数』
  4. 【Linux】一步一步学Linux——compress命令(了解)(71)
  5. POJ 1422 Air Raid (最小路径覆盖)
  6. 为下半年圣诞节提前准备素材模板,可临摹psd分层模板!
  7. mysql 去重 根据id_mysql去重,只留一个(id最小的)
  8. 根据表格中的数据长度自动调整表格宽度DBGrid
  9. python keystone_keystone命令与client接口学习
  10. jquery 弹出遮罩层
  11. 避免服务器成为肉鸡的应对措施
  12. Java图书管理系统练习程序(六)
  13. 红番茄(VS2017)两个注意点
  14. 如何重新安装微软应用商店
  15. Java毕设项目宠物医院管理系统计算机(附源码+系统+数据库+LW)
  16. android动画素材下载,Android Lottie动画使用
  17. 大学MOOC现代礼仪试题用哪个搜题软件好?里面的题库难吗?
  18. SpringMVC-转换器与格式化
  19. PHP中的opcode
  20. 操作系统-------OS概述

热门文章

  1. swagger传递日期类型 json形式
  2. mysql sample函数_Oracle SAMPLE 语法应用
  3. 优先队列——斐波那契堆(without source code)
  4. 在diy的文件系统上创建文件的流程
  5. java插入排序_Java程序要插入排序
  6. spock 集成测试_Spock 1.2 –轻松进行集成测试中的Spring Bean模拟
  7. jdk12 switch_玩JDK 12的Switch表达式
  8. java基准测试_微基准测试进入Java 9
  9. java timer开销_减少Java垃圾收集开销的5条提示
  10. 性能测试中脚本怎么写_脚本在流程中的性能影响