GBase南大通用的8a数据库中NULL和空值区别以及新旧版本加载入库时的差异介绍
GBase南大通用大规模分布式并行数据库集群系统GBase 8a MPP Cluster中NULL和空值区别与大多数据库无甚差异,其主要特征点包括有:
1.空值(null)是不能参与任何计算,因为空值参与任何计算都为空;在进行count()统计某列的记录数的时候,如果采用的NULL值,系统会自动忽略掉,但是空值是会进行统计到其中的。
2.判断NULL 用IS NULL 或者 IS NOT NULL(比较字符 ‘=’’>’ ‘<’ ‘<>’是不能用于查询null), SQL语句函数中可以使用ifnull()函数来进行处理,判断空字符用=‘‘或者 <>’‘来进行处理。
3.除字符类型,其它数字、日期类型插入’‘值会报错,(对于timestamp数据类型,如果往这个数据类型插入的列插入NULL值,则出现的值是当前系统时间)。
4.字符串空值(’’)的长度是0,是不占用空间的, 而的NULL长度是NULL,其实它是占用空间的。
5.对于空值的判断到底是使用is null 还是=‘’ 要根据实际情况来进行区分。
GBase南大通用对于老版本和新版本在在加载时是有一个差异点的,在版本升级或者迁移改造时需要关注了解;
在老版本中,Data_format3,在指定NULL_VALUE的情况下,数据文件中的分隔符分隔的空白列,入库为非空串;新(862Build43R6及后续版本952及后续版本):
Data_format3,在指定NULL_VALUE的情况下,数据文件中的分隔符分隔的空白列,入库为空串。
差异点具体说明如下:
旧版本中:指定NULL_VALUE,且null_value值设置不正确的情况下,数据文件中的分隔符分隔的空白列入库后为非空串NULL。(与新的有差异)
新版本中:指定NULL_VALUE,且null_value值设置不正确的情况下,数据文件中的分隔符分隔的空白列入库后为空串。