Oracle | 您所在的位置:网站首页 › Oracle转换成字符串 › Oracle |
Oracle中实际上没有Boolean布尔数据类型 因为Boolean类型不属于SQL86 SQL92规范,事实上也不属于任何一个数据库规范,所以就没有设置到SQL引擎中。事实上C语言我记得也是没有boolean原生类型的。实现上可以通过0/1或者Y/N来实现 然而PL/SQL支持这种类型了。说明Oracle数据库是支持布尔变量的,然而Oracle SQL引擎不支持。所以,如果返回值为布尔类型的函数是不能直接用在SQL语句上的。 但是网上也提供了两种解决方案 1、用Number(1) 2、用Char(1) 至于到底选用哪种方案呢,在网上有看到经验丰富的Oracle开发人员突出每种方法的一些优点/缺点的段落 The most commonly seen design is to imitate the many Boolean-like flags that Oracle’s data dictionary views use,selecting ‘Y’ for true and ‘N’ for false. However,to interact correctly with host environments,such as JDBC,OCCI,and other programming environments, it’s better to select 0 for false and 1 for true so it can work correctly with the getBoolean and setBoolean functions.为了效率,他们提供的解决方案是用 Char(1) 实现boolean 1、值为 0/1(因为与JDBC的getBoolean()等具有互操作性)与检查约束 2、CHAR类型(因为它使用比NUMBER少的空间) 如果是特定boolean类型情况下,Char(1)是比 Number(1) 更好的选择,因为前者所用的存储空间会比后者少 但也有需要注意的地方,用 Char(1) 的时候不能让这个字段可以为空,必须有缺省,否则查询效率会降低 |
CopyRight 2018-2019 实验室设备网 版权所有 |